У меня есть два сторонних модуля, которые определяют factory с тем же именем. Очевидно, что я не имею никакого контроля над наименованием этих модулей, не прибегая к kludge.
Кроме того, у меня есть еще два, внутренних модуля, каждый из которых использует другой один из двух сторонних модулей в качестве зависимости (как показано ниже). Я был уверен, что мне не удалось получить доступ к компонентам из модуля, не указанного в текущих зависимостях модулей, но оказалось, что я ошибся.
Здесь даже если own1
зависит от thirdParty1
(который имеет hello
, определенный как hello world
), он получает hi there
(от thirdParty2
) в контроллере. То же самое касается пары других модулей.
Есть ли способ "изолировать" модули, поэтому я могу использовать только те вещи, от которых я явно зависим? Если нет, то какой смысл иметь модули, если я могу достичь чего-либо в любое время (при условии, что основной модуль приложения имеет это как его зависимость)? Также, если у меня есть два модуля с компонентами с именем hello
, как я могу определить, что будет использоваться?
Вот jsbin для http://jsbin.com/vapuye/3/edit?html,js,output
angular.module('app', ['own1', 'own2']);
//third-party modules
angular.module('thirdParty1', []).factory('hello', function () {
return 'hello world';
});
angular.module('thirdParty2', []).factory('hello', function () {
return 'hi there';
});
// "own" modules
angular.module('own1', ['thirdParty1']).controller('Own1Ctrl', function(hello) {
this.greet = hello;
});
angular.module('own2', ['thirdParty2']).controller('Own2Ctrl', function(hello) {
this.greet = hello;
});
И результат:
<body ng-app="app">
<div ng-controller="Own1Ctrl as own1">
Own1: {{ own1.greet }}
</div>
<div ng-controller="Own2Ctrl as own2">
Own2: {{ own2.greet }}
</div>
</body>
Есть:
Own1: hi there
Own2: hi there