我正在运行Ember Data 1.0.0和Ember 1.3.0。
我有这样的数据:
{
"product": {
"id": 185588,
"name": "USB MIDI Adapter",
"images":["imageid1", "imageid2"....]
},
"images": [
{
"id": "imageid1",
"url": "google.com"
},
{
"id": "imageid2",
"url": "google.com2"
}
]
}这些模型是:
App.Image = DS.Model.extend({
url: DS.attr('string')
});
App.Product = DS.Model.extend({
name: DS.attr('string'),
images: DS.hasMany('Image')
});在我的模板中,我有一个编辑表单来更改相关图像上的url:
<form {{action save on="submit"}}>
{{input type="text" value=name}}
{{#each images}}
* {{input type="text" value=url}}<br>
{{/each}}
<button type="submit">Save</button>
</form>保存操作是:
save: function() {
var product = this.modelFor('productEdit');
product.save();
this.transitionTo('product', product);
}问题是,保存操作只保存产品(PUT产品),而不保存对图像urls所做的更改。模型绑定工作得很好,当我更改图片上的url时,gui会按它应该更新的方式更新,但是PUT不会按它应该发送的方式发送。
如何保存图像更改?
发布于 2013-12-17 17:19:11
您需要调用每个记录的保存,调用记录数组上的保存(这将迭代和保存),或者您可以重写序列化程序(serializeIntoHash)将图像注入产品的保存。
records.forEach(function(record){
if(record.get('isDirty')) record.save();
});https://stackoverflow.com/questions/20640505
复制相似问题