我正在使用ember.js构建我的第一个应用程序并遇到此问题:
客户应该能够在列表中添加和删除项。执行此操作的标准方法是创建新的项并将其添加到客户。
App.Customer = DS.Model.extend(
{
firstname: DS.attr('string'),
lastname: DS.attr('string'),
items: DS.hasMany('item')
});
App.Item = DS.Model.extend(
{
customer: DS.belongsTo('customer'),
description: DS.attr('string')
});
我的问题是我无法执行魔法并让项目出现,我必须从我的项目池中选择一个,将其分配给客户,当从客户中删除项目时我必须将其放回到我的项目池中项目池。
如何在不破坏任何对象本身的情况下删除对象之间的关系?这意味着我想让外键像我能够在MySQL数据库中一样跳转。
答案 0 :(得分:0)
您可以从这样的客户中删除项目:
在CustomerEditController中:
removeItem: function(item) {
this.get('items').removeObject(item);
}
然后在您的客户编辑模板中:
{{#each items}}
{{this.description}}<button {{action removeItem this}}>remove item</button>
{{/each}}
答案 1 :(得分:0)
@Steve H.这不是我的意思,但多亏了你的帮助,我可以自己解决。
我必须在 removeItem 函数
中添加几行removeItem: function (item)
{
this.get('store').find('customer', 0).then(function (myPool)
{
this.get('items').removeObject(item);
myPool.get('items').pushObject(item);
});
}