Ember.js 如何在余烬数据中保存关联模型的更改
我正在用Ember 1.3.0运行Ember Data 1.0.0 我有以下数据:Ember.js 如何在余烬数据中保存关联模型的更改,ember.js,ember-data,Ember.js,Ember Data,我正在用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":
{
"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操作只保存产品(PUT product),而不保存对图像URL所做的更改。模型绑定工作得很好,当我更改图像上的url时,gui会按应有的方式更新,但PUT不会按应有的方式发送
如何保存图像更改?您需要在每条记录上调用save,在recordarray上调用save(它将迭代并保存),或者您可以覆盖序列化程序(
serializeIntoHash
)将图像插入产品的保存中
records.forEach(function(record){
if(record.get('isDirty')) record.save();
});
你能为其中一个解决方案提供一个例子吗?我对Ember(数据)不太熟悉,不知道该怎么做:)谢谢你,但我不明白,我看不到任何关系,save函数也没有什么特别之处。你能解释一下吗?你所要做的就是抓取记录数组并调用save。在第二个示例中,我创建了一个颜色为hasMany的dog对象,然后点击save,并使用每种颜色的infoThank,
product.get('images').save()对服务器进行了3次调用代码>工作正常:)即使只有一个图像被更改,它也会对所有图像发送一个PUT,您知道是否可以只放置实际更改的图像吗?是的,您可以迭代数组并获取属性isDirty(bool)(record.get('isDirty')
)并根据该值决定是否保存
records.forEach(function(record){
if(record.get('isDirty')) record.save();
});