我的控制器上有一个简单的属性。它用于呈现对话中所有电子邮件的列表。
conversation: (->
App.Email.filter (otherEmail) =>
@get('model').isIncludedInConversation otherEmail
).property('model')
当我去页面时,一切正常,花花公子,因为尚未计算CP。当我发送新电子邮件时,conversation
属性未更新。我需要切换我正在查看的电子邮件以触发conversation
重新计算。
我知道过滤器正在更新。问题是CP的值不会更改,而基础{{#each conversation}}
不会更新。我怎样才能做到这一点?
编辑:我在这里添加了小提琴:http://jsfiddle.net/twinturbo/GUeE3/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数据。