我有一个观察一系列项目的组件:
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)
答案 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}}