我有生成复选框列表的代码:
accountsCheckboxes: Ember.computed('accountsCheckboxes.@each', function(){
return this.model.accounts.map(row => {
return {
label: row.get('name'),
value: row.get('id')
};
})
}),
但修改帐户集合,添加或删除后,此计算属性不会刷新。我尝试了如何使用事件或如何观察商店集合,但没有成功。 我在其他控制器中模仿这个模型集。
答案 0 :(得分:1)
通过观察您定义的相同属性,您想要做的事情有点令人困惑:
// accountsCheckboxes observes accountsCheckboxes?
accountsCheckboxes: Ember.computed('accountsCheckboxes.@each', ...)
这不起作用,可能会导致无限的查找链。
你的意思是反对观察model.accounts
吗?如果是这样,这就是你可以做到的:
accountsCheckboxes: Ember.computed('model.accounts.@each.name', function() {
return this.get('model.accounts').map(row => {
return {
label: row.get('name'),
value: row.get('id')
};
})
});
请注意,您必须致电this.get('model')
,而不是this.model
,以确保始终获得正确的数据。
或者,您可以使用Ember.computed.map:
accountsCheckboxes: Ember.computed.map('model.accounts.@each.name', function(row) {
return {
label: row.get('name'),
value: row.get('id')
};
});