我的主控制器包含一系列公司,其中包含大量详细信息。
我想提供几个不同的视图,用于分割和汇总这些数据。总结数据所需的计算非常复杂,我需要有一个地方来存储它们。我应该
文档的“入门”部分会添加剩余待办事项to the controller的数量,因此我认为我应该为每个视图创建单独的控制器。
作为一个快速跟进:如果我选择#2,我应该创建许多扩展我原来的CompaniesController的控制器,所以我不必重新加载任何数据吗?
答案 0 :(得分:2)
将数据操作方法添加到每个视图对象
请不要!业务逻辑更适合控制器。
或为每个视图创建一个新控制器,并将数据操作方法添加到控制器?
排序,如果每个控制器的计算基本相同,你可以用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;
}
...
});
希望它有所帮助。