我有一个在Ember控制器上定义的计算属性myArray
,该控制器返回一个数组。该阵列应初始化为model
的内容,然后根据用户输入的查询过滤model
重新进行计算。如何初始化控制器的计算属性以在Ember中建模?
myArray: function() {
// return a value that filters model with query
}.property('model', 'query')
的问题是,我无法弄清楚如何在同一时间两者都做。以下不能将myArray
初始化为model
;我猜测是因为模型异步加载,并且init()
在它完成之前运行。
// doesn't work
init: function() {
this._super();
this.set('myArray', this.get('model'));
}
所以我认为setupController()
是设置它的地方,但我发现,设置myArray
有导致过滤器更新不工作,也许是因为我被覆盖的定义。
// route definition...
setupController: function(controller, model) {
controller.set('model', model);
controller.set('myArray', model); // breaks updating
}
我该如何实现我的目标?
设置该值不会覆盖计算出的属性,它会像调用者那样调用计算的属性,如[这里]所述(http://guides.emberjs.com/v1.11.0/object-model/computed-properties /)。 – GJK
我的不好。感谢您指出。我改变了我的答案以反映这一点。 – jnfingerle