Во-первых, некоторый контекст для моего вопроса, который также объясняется в документах MEAN.JS: мое угловое приложение Foo
загружается из моего файла init.js
, в котором есть эта строка:
angular.element(document).ready(function () {
angular.bootstrap(document, ['FooCore']);
});
Мое приложение FooCore
имеет несколько зависимостей от поставщиков, которые я обычно перечисляю в его установщике, что происходит непосредственно перед этой строкой.
Затем компоненты моего приложения (поиск, профиль, панель инструментов и т. д.) находятся в своих собственных модулях. Каждый раз, когда я объявляю подкомпонент FooCore
, я добавляю его к его зависимостям с помощью:
angular.module('FooCore').requires.push('ModuleBar');
Таким образом, логически все компоненты моего приложения могут взаимодействовать друг с другом (например, совместно использовать директивы), что для меня имеет смысл. Мой вопрос таков: скажем, ModuleBar
имеет зависимость от поставщика X, которая нужна только ему, поэтому я объявляю эту зависимость в установщике ModuleBar
- почему X доступен для всех одноуровневых компонентов моего приложения FooCore
? Вот визуальное представление:
FooCore
|----ModuleBar => angular.module('ModuleBar', ['vendor-X']);
| |---- vendor-X
|
|----ModuleBaz => angular.module('ModuleBaz', []);
Разве vendor-X
не должно быть доступно только ModuleBar
? Почему я обнаружил, что он также доступен для ModuleBaz
?