如何观察商店的收藏

时间:2016-09-25 19:02:59

标签: ember.js ember-data

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

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

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

1 个答案:

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