我正在寻找有关创建可在我的应用程序中重用的通用控制器的建议。作为一个例子,我创建了以下GIST:
https://gist.github.com/heide-de/10832576 但这里是相关的代码片段:
angular.module('genericTestApp', [])
.factory('Names', function() {
return {
names: []
};
})
.controller('IndexController', function(Names) {
Names.names = [
{firstname:'Sarah', surname:'Schmitt'},
{firstname:'Paul', surname:'Wells'},
{firstname:'Felix', surname:'the cat'}
]
})
.controller('SecondIndexController', function(Names) {
Names.names = [
{firstname:'Octo', surname:'Cat'},
{firstname:'Beth', surname:'Appleby'},
{firstname:'Fred', surname:'Bloggs'}
]
})
.controller('TableController', function($scope, Names) {
$scope.names = Names.names;
})
对我来说非常不对的是,本例中的TableController依赖于以前在IndexController中配置了注入的Names工厂的事实。 下一个开发人员只会注入名称,并且不知道它之前需要配置。
使用Angular有更好的方法吗?
答案 0 :(得分:0)
您的方法正确 - 在factory
中配置controller
始终是个坏主意。 controller
假设包含视图特定逻辑,在我看来甚至应该只在呈现特定视图时包含它。 (无论如何我写我的应用程序的方式)
要在应用程序加载时配置任何内容,您需要run
,其中应包含应用程序在开始时需要执行的所有初始内容。