如何在AngularJS中创建通用控制器?

时间:2014-04-16 08:07:33

标签: angularjs

我正在寻找有关创建可在我的应用程序中重用的通用控制器的建议。作为一个例子,我创建了以下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有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您的方法正确 - 在factory中配置controller始终是个坏主意。 controller 假设包含视图特定逻辑,在我看来甚至应该只在呈现特定视图时包含它。 (无论如何我写我的应用程序的方式)

要在应用程序加载时配置任何内容,您需要run,其中应包含应用程序在开始时需要执行的所有初始内容。

This might be a good read.