我有一个简单的ArrayController,它带有一个filteredContent计算属性,可以让我切割出一个ember对象数组。我有一个间隔属性,当我改变时,我想重新计算计算属性。
然而,如下所示,当我“设置”间隔
时,我的filteredContent属性似乎没有触发App.FilterController = Ember.ArrayController.extend({
interval: 15,
filterAvailable: function(event) {
var selected = event.target.selectedIndex;
var value = this.get('content')[selected].get('id');
this.set('interval', value);
},
filteredContent: function() {
var cleaned = this.get('content').toArray().filter(function(apt) {
return apt.get('id') === null;
});
var sorted = cleaned.sort(function(a, b) {
return Ember.compare(new Date(get(a, 'start')), new Date(get(b, 'start')));
});
return sorted;
}.property("interval", "content.@each")
});
在我的模板中,我有一个带有简单changeBinding的select,它启动了“可用过滤器”方法
{{view Ember.Select
changeBinding="controller.filterAvailable"}}
答案 0 :(得分:1)
我要去睡觉,但如果没有什么依赖于(又称观察)filteredContent
那么它就不会重新计算。
将其添加到模板确实满足要求。
您可以检查this
是否为控制器,而不是视图或其他内容,我不确定如何调用filterAvailable。
是的,这是我的怀疑,执行时filterAvailable的上下文是选择视图,你需要获取控制器并设置它。因此,目前您在选择视图上设置属性interval
,而不是预期的属性。
filterAvailable: function(event) {
var selected = event.target.selectedIndex;
var value = this.get('content')[selected].get('id');
// the controller backing the select view is your Filter Controller
this.set('controller.interval', value);
},