如何在Ember Data中保存关联模型的更改

时间:2013-12-17 17:12:56

标签: 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": "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不会按原样发送。

如何保存图像更改?

1 个答案:

答案 0 :(得分:2)

您需要在每条记录上调用save,在recordarray上调用save(将迭代并保存),或者您可以覆盖序列化程序(serializeIntoHash)以将图像注入到产品的保存中。

records.forEach(function(record){
   if(record.get('isDirty')) record.save();
});