我在Github上读过两个AngularJS示例。我很困惑如何模块化控制器。第一个是设置变量(foodMeApp)并重新使用它。控制器需要较少的参数。它更容易阅读。 但是,第二个不使用变量(foodMeApp)并且有更多的参数。我认为这种方式经常用于AngularJS样本 使用第二种方式是否有任何优点?
1。https://github.com/IgorMinar/foodme
var foodMeApp = angular.module('foodMeApp', ['ngResource']);
foodMeApp.constant('CONFIG_A', {
baseUrl: '/databases/',
});
foodMeApp.controller('HogeController', function HogeController($scope, CONFIG_A) {
console.log(“less arguments");
});
2. https://github.com/angular-app/angular-app
angular.module('foodMeApp', ['ngResource']);
angular.module('foodMeApp').constant('CONFIG_B', {
baseUrl: '/databases/',
});
angular.module('foodMeApp').controller('HogeController', ['$scope', 'CONFIG_B', function($scope, CONFIG_B) {
console.log("more arguments");
}]);
答案 0 :(得分:1)
因为angular.module(' ...'),常量,提供,控制器,工厂...返回相同的mdoule你可以链接模块方法调用,如果你想要或不...它只是javascript。
你可以写
angular.module('foo',[])
.controller('bar',function(){})
.service('baz',functinon(){})
.constant('buzz',something)
.value('bizz',somethingelse);
没有什么不同。
答案 1 :(得分:0)
此示例使用一个数组作为依赖项,这些数组将被注入控制器。当代码在某个时间缩小时,通常使用数组方法,并允许angularjs确切地知道将注入哪些项目。如果没有这个阵列,角度只会看到' a'' b'作为注入函数的项目,无法弄清楚这些是什么。数组中的项目是字符串,并且在缩小发生时不会更改。
angular.module('foodMeApp').controller('HogeController', ['$scope', 'CONFIG_B',
function($scope, CONFIG_B) {
console.log("more arguments");
}]);
希望这有助于解释您所看到的差异。
答案 2 :(得分:0)
没有第二种选择的“优点”。第一种方法更受欢迎,因为它避免重复angular.module('foodMeApp')
这么多次。
如果您给它命名为“foodMeApp”,您可以直接使用foodMeApp
,就像您在第二种方法中使用的那样。减少重复,简化生活。