ember过滤器承诺在模型内部

时间:2017-07-06 05:19:53

标签: ember.js

我有两种型号: 用户:

export default DS.Model.extend({
  books: hasMany('book', { async: true }),
});

书:

export default DS.Model.extend({
  title: DS.attr('string'),
  state: DS.attr('number'),
});

在我的控制器中我得到一个用户作为我的模型,我想创建一个像这样的计算属性

  activeBooks: Ember.computed('model.books', function() {
    var books = this.get('model.books').filter(function (book, index, array) {
      // debugger;
      return (this.get('book.state') === 1);
    }.bind(this));
    return books;
  }),

但过滤器不工作,基本上返回一个空数组。 P.S 1.我一边用书一边装书。在调试器行,我查询this.get('user.books.length')我得到每个用户的正确书籍数量。谁能指出我在这里做错了什么? 非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以使用filterBy并返回结果。

activeBooks:Ember.computed('model.books', function() {
 return this.get('model.books').filterBy('state',1);
})

您不需要在过滤功能中使用bind(this)