如何观察店铺collection

How to observe store collection

我有生成复选框列表的代码:

accountsCheckboxes: Ember.computed('accountsCheckboxes.@each', function(){
  return this.model.accounts.map(row => {
    return {
      label: row.get('name'),
      value: row.get('id')
    };
  })
}),

但在修改帐户 collection、添加或删除后,此计算 属性 不会刷新。我尝试找到如何处理事件,或如何观察商店 collection,但没有成功。 我在其他控制器中修改了这个模型collection。

通过观察您正在定义的 属性,您尝试做的事情有点令人困惑:

// 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')
  };
});