观察布尔数组中的更改

时间:2017-06-14 12:28:06

标签: ember.js observers

我有一个观察一系列项目的组件:

itemsChanged: Ember.observer('items', 'items.[]', 'items.@each' function () {
    // ...code...
}),

当我有一个带有布尔属性的对象数组时,这可以正常工作。

Array(arraySize).fill(false, 0).fill(true, 0, 1).map(model => WrapperBool.create({ model }))

但是,如何在一组布尔值发生变化时观察它?数组总是大小相同。

Array(arraySize).fill(false, 0).fill(true, 0, 1)

1 个答案:

答案 0 :(得分:0)

您需要使用符合KVO(KeyValueObservable)的方法进行修改, 要添加您需要pushObject而不是push,并且需要使用addObject进行修改,只会触发相应的观察者。

在您的情况下,依赖键items.[]就足够了。你不应该使用items.@each(我认为它已被弃用,但我不确定,无论如何你可以使用items.[]它会关注项目的添加/删除。

的application.js,

import Ember from 'ember';
export default Ember.Controller.extend({  
  items:[true,false],
  itemsChanged:Ember.observer('items.[]',function(){
    console.log(' items ',this.get('items'));
  }),
  actions:{
    test(){      
      this.get('items').addObject(true);
    }
  }
});

application.hbs

<h1{{action 'test'}}>Welcome to {{appName}}</h1>
{{items}}

sample twiddle播放