0

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

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

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

我知道过滤器正在更新。问题是 CP 的价值没有改变,底层证券{{#each conversation}}没有更新。我怎样才能使这项工作?

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

4

1 回答 1

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 数据。

于 2013-04-29T21:05:52.193 回答