我正在使用Ember 1.3.0运行Ember Data 1.0.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')
});
在我的模板中,我有一个编辑表单来更改相关图像上的网址:
<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产品),但不保存对图像网址所做的更改。模型绑定工作正常,当我更改图像上的URL时,gui会按原样更新,但PUT不会按原样发送。
如何保存图像更改?
答案 0 :(得分:2)
您需要在每条记录上调用save,在recordarray上调用save(将迭代并保存),或者您可以覆盖序列化程序(serializeIntoHash
)以将图像注入到产品的保存中。
records.forEach(function(record){
if(record.get('isDirty')) record.save();
});