Ember数据删除嵌套记录

时间:2015-02-11 15:06:34

标签: rest ember.js ember-data

我有多个购物车。 每个购物车都有多种产品。

当我试图从购物车中删除产品时,生成的网址会尝试全局删除产品,而不仅仅是从该特定购物车中移除产品。

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return this.store.find("cart", 2);
  },
  actions: {
    remove: function(product){
      product.deleteRecord();
      product.save();
    }
  }
});

{{#each product in model.products}}
    <div>{{product.title}} <button {{action "remove" product}}>x</button></div>
  {{/each}}

生成的HTTP请求是DELETE products / {id}

我希望它能以某种方式在网址中包含购物车ID。如何处理这种情况?

演示:http://jsbin.com/lecejejara/1/edit?html,js

1 个答案:

答案 0 :(得分:3)

您正在呼叫deleteRecord(),删除记录,从而全局删除记录。你真正需要做的是取消产品和购物车的关联。

假设您的购物车名为cart,您可以更改模板以传递购物车:

{{#each product in model.products}}
    <div>{{product.title}} <button {{action "remove" product cart}}>x</button></div>
{{/each}}

并修改您的移除操作以取消关联此特定购物车和产品:

  actions: {
    remove: function(product, cart){
      cart.get('products').removeObject(product);
      cart.save();
    }
  }