模块之间的依赖关系指定每个模块(想象一个模块是一个功能包)如何需要其他模块提供的某些功能。
服务依赖性是指某物(控制器、服务等)需要特定服务才能工作的方式。
这些是相关的。如果控制器(即)需要另一个模块中的服务,您可以在这里证明模块依赖性和服务依赖性。如果后面提到的服务在同一个模块内。控制器的模块不必依赖另一个模块。
想象一下:
- 模块A
- 模块 B
如果Functionality1需要Functionality2,它可以使用它而不需要ModuleA需要导入ModuleB,因为它们在同一个模块中。现在如果Functionality2 需要Functionality4,ModuleA 需要导入ModuleB 所以Functionality4 可以带入“范围”(用作这个词的一般意义,不要与$scope 混淆)的ModuleA.
AngularJS 中的每个模块都使用angular.module('name', []) 声明(注意括号)。并且每个模块(一旦创建)都可以使用angular.module('name') 定位(注意没有括号)。
由于UsersController(在components.users 模块中声明)需要Users 工厂(在api.users 模块中声明)并且components.users 模块不导入api.users,因此您提供的代码应该不起作用。
看下面(代码明显失败)
angular.module('components.users', [])
.controller('UsersController', function(Users) {
console.log(Users);
})
angular.module('api.users', [])
.factory('Users', function() {
return this;
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<span ng-app="components.users" ng-controller="UsersController"></span>
为了使其正常工作,您可以在同一 components.users 模块中声明 Users 工厂或在 components.users 中导入 api.users 模块。
选项 1:在同一个 components.users 模块中声明 Users。
// create the module
angular.module('components.users', [])
.controller('UsersController', function(Users) {
console.log(Users);
})
// locate the module
angular.module('components.users')
.factory('Users', function() {
return this
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<span ng-app="components.users" ng-controller="UsersController"></span>
选项 2:在 components.users 中导入 api.users 模块
// create the module with a dependency to `api.users`
angular.module('components.users', ['api.users'])
.controller('UsersController', function(Users) {
console.log(Users);
})
// create an independent module `api.users`
angular.module('api.users', [])
.factory('Users', function() {
return this
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<span ng-app="components.users" ng-controller="UsersController"></span>