AngularJs通过其名称解析/检索模块

时间:2014-01-02 08:35:53

标签: javascript angularjs

作为suggested我将所有服务包装到一个模块中,因此,我创建了文件来组织它们:

myServicesModule.js

var myServices = angular.module('myServices', []);

serviceA.js

myServices.service('serviceA', function(){...});

和serviceB.js

myServices.service('serviceB', function(){...});

等等。

作为一种好的做法,我们应该尽量避免使用全局变量,那么有什么方法可以避免通过某些东西来声明全局var myServices,我猜模块是通过名称解析的?我理解通过将所有服务放在一个文件中可以解决这个问题,但我不想创建一个巨大的文件。

3 个答案:

答案 0 :(得分:2)

模块函数的第二个参数(依赖项数组)是可选的:

如果设置第二个参数,它将创建模块(并覆盖任何具有相同名称的现有模块):

// Create the module
angular.module('foo', []).controller('FooCtrl', function($scope) {
    // ...
});

如果您没有设置第二个参数,它将按名称检索模块,如果模块不存在则失败:

// Retrieve module by its name and fail if module does not exist.
angular.module('foo').controller('FooCtrl', function($scope) {
    // ...
});

答案 1 :(得分:1)

  

angular.module是一个创建,注册和创建的全球场所   检索Angular模块。所有模块(角度核心或第三方)   应该可以使用的应用程序必须使用注册   这种机制。

     

传递两个或多个参数时,会创建一个新模块。 如果通过   只有一个参数,一个现有模块(名称作为第一个传递   检索模块的参数

所以这会奏效:

angular.module('myServices', []);

angular.module('myServices').service('serviceA', function(){...});

angular.module('myServices').service('serviceB', function(){...});

答案 2 :(得分:1)

您的服务不需要创建变量。它可以这样做(在不同的文件中): 例如,file1.js:

angular.module('myServices', []);

file2.js

angular.module('myServices').service('serviceA', function(){...});