2013-04-29 107 views
0

我有我的控制器上的一個簡單的屬性。它用於呈現對話中所有電子郵件的列表。當我去的網頁,因爲CP還沒有被計算尚未灰燼計算屬性返回一個過濾器

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

一切正常,很正常。當我發送新郵件時,conversation屬性未更新。我需要切換我正在查看的電子郵件以觸發conversation重新計算。

我知道過濾器正在更新。問題是CP的價值不變,並且底層{{#each conversation}}未更新。我該如何做這項工作?

編輯:我添加了小提琴這裏:http://jsfiddle.net/twinturbo/GUeE3/1/

+0

'otherEmail'來自哪裏?它不應該是一個屬性依賴? – MilkyWayJoe 2013-04-29 21:14:54

+0

@MilkyWayJoe它由'filter'函數傳遞給用於過濾的回調函數https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/store.js#L836 – 2013-04-30 00:20:32

回答

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') 

此代碼之外工作對我來說用L一個測試版的燼和餘燼數據。