为每个视图对象添加数据操作方法
请不要!业务逻辑更适合控制器。
或者为每个视图创建一个新的控制器,并将数据操作方法添加到控制器中?
有点,如果每个控制器的计算基本相同,您可以使用 a Mixin
,如下所示:
App.CalculationBase = Ember.Mixin.create({
doHeavyCalculations: function() {
...
return results;
}
...
});
然后将其混合到您的其他控制器中,例如:
App.MyController = Ember.ObjectController.extend(App.CalculationBase, {
// here you can then call this.doHeavyCalculations()
});
App.MyOtherController = Ember.ArrayController.extend(App.CalculationBase, {
// here you can then call this.doHeavyCalculations()
});
但是根据您的设置的外观,您也可以创建一个itemController
带有烘焙混合的或不创建的。
例如,假设在您的模板中您正在循环访问CompaniesController
这样的内容:
{{#each company in model}}
{{company}}
{{/each}}
然后 itemController 方法将为CompanyController
每个公司项目单独实例化一个。
App.CompaniesController = Ember.ArrayController.extend({
itemController: 'company'
});
App.CompanyController = Ember.ObjectController.extend({
doHeavyCalculations: function() {
...
return results;
}
...
});
希望能帮助到你。