应该在AngularJS上设置angular.module变量

时间:2014-05-22 10:33:43

标签: javascript angularjs

我在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");
}]);

3 个答案:

答案 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,就像您在第二种方法中使用的那样。减少重复,简化生活。