如何获得最新的活动项目?

时间:2015-07-08 19:41:34

标签: ember.js ember-data ember-cli

以下内容将返回所有有效项目。

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

为什么会这样,我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

我看到了两个问题:

  1. 您的计算属性具有不正确的从属密钥。仅依靠activeItems,问题只会在activeItems属性返回新对象时更新,而不会在内容更新时更新。你应该看activeItems.lastObject
  2. lastObject是一个计算属性,这意味着如果不使用Ember&#39; get()函数,您可能无法访问它。
  3. 试试这个:

    activeItem: Ember.computed('activeItems.lastObject', {
        get() {
            return this.get('activeItems.lastObject');
        }
    })
    

    或者,简写:

    activeItem: Ember.computed.reads('activeItems.lastObject')