Зависимость между модулями указывает, как каждому модулю (представьте, что модуль представляет собой пакет функций) нужны некоторые функции, предоставляемые другим модулем (модулями).
Зависимость от службы — это то, как что-то (контроллер, служба и т. д.) нуждается в конкретной службе для работы.
Это связано. Если контроллеру (т.е.) нужна служба, которая находится в другом модуле, здесь вы можете указать зависимость модуля и зависимости службы. Если позже упомянутая служба находится внутри того же модуля. Модуль контроллера не должен зависеть от другого модуля.
Итак, представьте себе это:
- ModuleA
- Functionality1 (Service1)
- Функциональность2 (Сервис2)
- ModuleB
- Functionality3 (Service3)
- Функциональность4 (Service4)
Если Functionality1
нужен Functionality2
, он может использовать его без необходимости ModuleA
импортировать ModuleB
, потому что они находятся в одном модуле. Теперь, если Functionality2
требуется Functionality4
, ModuleA
нужно импортировать ModuleB
, чтобы Functionality4
можно было перенести внутрь «области действия» (используется в общем смысле этого слова, не путать с $scope
) из ModuleA
.
Каждый модуль в AngularJS объявляется с помощью angular.module('name', [])
(обратите внимание на скобки). И каждый модуль (после создания) можно найти с помощью angular.module('name')
(обратите внимание на отсутствие скобок).
Предоставленный вами код не должен работать, так как UsersController
(объявлено в модуле components.users
) требует Users
factory (объявлено в модуле 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>
Чтобы чтобы это работало, вы можете либо объявить Users
factory внутри того же модуля components.users
, либо импортировать api.users
модуль в components.users
.
Вариант 1: объявить Users
внутри того же модуля components.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: импортировать api.users
модуль внутрь components.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>
person
lealceldeiro
schedule
03.08.2018