当它不应该时,灰烬观察者会在阵列控制器上发射

时间:2014-10-30 16:31:23

标签: ember.js

更新

这是我的问题所在:http://emberjs.jsbin.com/ruwet/8/edit?html,js,console,output4


我在数组控制器上有一个简单的过滤属性:

import Ember from 'ember';

export default Ember.ArrayController.extend({

  activeEncodes: function() {
    return this.filterBy('model', 'isActive');
  }.property('model.@each.isActive');

});

我已连接到websocket并使用

更新我的商店中的编码
store.store.push('encode', data);

即使它只是更新我的数据(progress)上的某个属性,也会重新计算activeEncodes。这导致我的模板中出现了一些视觉混乱。

如果我使用model.@each.id,它不会重新计算,但任何其他属性似乎都会触发CP重新计算(即使该属性没有更改)。

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

按下它会导致整个模型无效。然后,这被认为是一个新模型,可以激发任何观察者观察该模型上的任何东西(因为它将其视为新模型)。它也与Ember data model reload causes item in {{each}} to be removed/inserted back - losing current state切线相关。

id可能是一个特例,我认为它超出了模型底层属性的范围(同样的原因是你没有在模型上定义id)。我只是猜测它。