2016-09-25 52 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

它看起来像运要重新计算你不需要挥发性这个 –