使用ember.js关系在客户的项目列表中添加和删除项目

时间:2013-11-16 17:04:42

标签: ember.js

我正在使用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数据库中一样跳转。

2 个答案:

答案 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);
    });
}