我正在尝试与ember-data和协会的工作方式达成协议。
这是一个使用带有rails的ember的应用程序。
我有以下内容:
App.Permission = DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
group: DS.belongsTo('group')
});
App.Group = DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
permissions: DS.hasMany('permission', {async: true}),
user: DS.belongsTo('user')
});
App.User = DS.Model.extend({
username: DS.attr('string'),
email: DS.attr('string'),
password: DS.attr('string'),
groups: DS.hasMany('group', {async: true})
});
对于群组,我有两个列表,未选中和已选中。 HTML5拖放用于将数据从一个列表拉到另一个列表。对于我选择的数据,在我的控制器中,我有:
selectedPermissions: function() {
return Ember.ArrayProxy.createWithMixins(Ember.SortableMixin, {
sortProperties: ['name'],
content: this.get('permissions')
});
}.property('model.selectedPermissions')
这完美无瑕!任何转到选定方的权限都会自动保存并与该组关联。
现在,对于用户来说,还有两个列表,未选中和已选择,以及与上面相同的设置。对于用户控制器中的选定数据,我有:
selectedGroups: function() {
return Ember.ArrayProxy.createWithMixins(Ember.SortableMixin, {
sortProperties: ['name'],
content: this.get('groups')
});
}.property('model.selectedGroups'),
由于某些原因,这会发生的情况是,当我移动第一组或第一组时,它们与用户相关联。但是,任何未来的变化都不是。我查看发送到rails的数据,它发送的是原始值的数组,而不是更新的数据。
这两个密切相关,他们的代码非常相似。我已经验证了它们之间的所有代码都是正确的。
我知道createWithMixins不是问题,因为我尝试删除它并且它没有任何区别,所以还有其他事情发生。
我的一个问题是:通过将“this.get('groups')”绑定到selectedGroups,ember是否需要正确关联它们之间的数据?它似乎就是组/权限案例中发生的事情。我没有任何其他特殊代码可以做任何事情来设置。
当然,更大的问题是,我在这里遗漏了什么吗?
任何指针都会受到赞赏,因为我真的迷失了这个。
我知道我只发布了一些代码,但希望它足以使用。