以下内容将返回所有有效项目。
activeItems: Ember.computed('items.@each.status', {
get() {
return this.get('items').filter((item) => {
return item.get('status') === 'active';
});
}
})
// Template
{{#each activeItems as |activeItems|}}
{{activeItem.status}}
{{/each}}
以上所有工作。现在假设我要创建一个计算属性,用于选择最后一个activeItem
。我试过了:
activeItem: Ember.computed('activeItems', {
get() {
return this.get('activeItems').lastObject;
}
}),
// Template
{{activeItem.status}} <-- returns nothing
为什么会这样,我怎样才能让它发挥作用?
答案 0 :(得分:2)
我看到了两个问题:
activeItems
,问题只会在activeItems
属性返回新对象时更新,而不会在内容更新时更新。你应该看activeItems.lastObject
。lastObject
是一个计算属性,这意味着如果不使用Ember&#39; get()
函数,您可能无法访问它。试试这个:
activeItem: Ember.computed('activeItems.lastObject', {
get() {
return this.get('activeItems.lastObject');
}
})
或者,简写:
activeItem: Ember.computed.reads('activeItems.lastObject')