Ember计算属性返回一个过滤器

时间:2013-04-29 20:40:40

标签: ember.js ember-data

我的控制器上有一个简单的属性。它用于呈现对话中所有电子邮件的列表。

conversation: (->
  App.Email.filter (otherEmail) => 
    @get('model').isIncludedInConversation otherEmail
).property('model')

当我去页面时,一切正常,花花公子,因为尚未计算CP。当我发送新电子邮件时,conversation属性未更新。我需要切换我正在查看的电子邮件以触发conversation重新计算。

我知道过滤器正在更新。问题是CP的值不会更改,而基础{{#each conversation}}不会更新。我怎样才能做到这一点?

编辑:我在这里添加了小提琴:http://jsfiddle.net/twinturbo/GUeE3/1/

1 个答案:

答案 0 :(得分:1)

我不熟悉coffeescript,所以我假设你的代码相当于:

conversation: function() {
  var self = this;
  App.Email.filter( function( otherEmail ) {
    return self.get('model').isIncludedInConversation( otherEmail );
  }); 
)}.property('model')

我很想说你应该在过滤函数之外捕获model

conversation: (->
  _model = @get('model')
  App.Email.filter (otherEmail) => 
    _model.isIncludedInConversation otherEmail
).property('model')

此代码适用于最新版本的ember和ember数据。