2016-09-25 50 views
1

我有生成複選框列表代碼:如何觀察店內集合

accountsCheckboxes: Ember.computed('[email protected]', function(){ 
    return this.model.accounts.map(row => { 
    return { 
     label: row.get('name'), 
     value: row.get('id') 
    }; 
    }) 
}), 

但修改賬催收後,添加或刪除,這種計算性能犯規刷新。我試圖找到如何與事件,或如何觀察店鋪收集,但沒有成功。 我modyfy在其他控制器這個模型集合。

回答

1

它有點混亂,你想要什麼,通過觀察同一個屬性做你定義:

// accountsCheckboxes observes accountsCheckboxes? 
accountsCheckboxes: Ember.computed('[email protected]', ...) 

這將無法工作,可能會導致查找無限鏈。

您的意思是觀察model.accounts而不是?如果是這樣,這是你可以做了什麼:

accountsCheckboxes: Ember.computed('[email protected]', function() { 
    return this.get('model.accounts').map(row => { 
    return { 
     label: row.get('name'), 
     value: row.get('id') 
    }; 
    }) 
}); 

請注意,您必須調用this.get('model'),不this.model,以確保您始終獲得正確的數據。

或者,您可以使用Ember.computed.map

accountsCheckboxes: Ember.computed.map('[email protected]', function(row) { 
    return { 
    label: row.get('name'), 
    value: row.get('id') 
    }; 
}); 
+0

@PatsyIssa你說得對,我沒看過這個問題妥善 –

+0

這個道具取決於複選框,'model.accounts。[]'和'accountsCheckboxes。@ each.name'都需要依賴關鍵字。 – nem035

+0

它看起來像運要重新計算你不需要揮發性這個 –