我尝试根据过滤后的值设置计算属性。问题是@each只支持1级嵌套,并且不能在顶级工作。
来自官方指南:
请注意@each只能深入一级。您不能使用嵌套表单,如todos。@ each.owner.name或todos。@ each.owner。@ each.name。
所以这不是
computedProperty: function() {
return this.get('context').filterProperty('selected', true);
}.property('@each.selected');
或者
computedProperty: function() {
return this.get('context').filterProperty('selected', true)[0];
}.property('context.@each.selected')
不能工作(context
更改后不会触发计算属性。)
context
在Ember.ContainerView
实例化中传递:
childViews: function() {
return [
App.ReportNavigationFilterView.create({
filterType: 'base',
filterColor: 'orange',
context: this.get('controller.model.base')
//context: Ember.computed.alias('controller.model.base')
}),
App.ReportNavigationFilterView.create({
filterType: 'sector',
filterColor: 'green',
context: this.get('controller.model.sector')
}),
App.ReportNavigationFilterView.create({
filterType: 'topic',
filterColor: 'yellow',
context: this.get('controller.model.topic')
}),
App.ReportNavigationFilterView.create({
filterType: 'answer',
filterColor: 'red',
context: this.get('controller.model.answer')
})
];
}.property()
有关如何在更改上下文时更新computedProperty的任何建议?
context = [ {selected: true}, {selected: false}, ...]
答案 0 :(得分:0)
我结束了从Ember.ContainerView
切换到Ember.CollectionView
,其中有以下工作:
computedProperty: function() {
return this.get('context').filterProperty('selected', true)[0];
}.property('content.@each.selected')