У меня есть проект, который стал слишком большим для монолитных файлов контроллера/сервиса, поэтому я начал разбивать их на более мелкие компоненты, а затем использовать систему ввода модулей/зависимостей, чтобы все работало.Замедление вокруг зависимостей AngularJS
У меня возникли проблемы с пониманием того, что такое Angular с зависимостями, потому что я нахожу вещи, работающие в модулях, даже если я не объявил зависимость. Вот простой пример:
// a simpler app that uses 2 controllers
angular.module("myApp", ["controller", "controller2"]);
// controller has a dependency on
// module1 to access the constant
angular.module("controller", ["module1"])
.controller("newController", ["$scope", "mod1Constant", function ($scope, mod1Constant) {
\t $scope.myText1 = mod1Constant;
}]);
// controller2 doesn't declare a dependency
// on module1 but can still access the constant
angular.module("controller2", [])
.controller("newController2", ["$scope", "mod1Constant", function ($scope, mod1Constant) {
\t $scope.myText2 = mod1Constant;
}]);
angular.module("module1", [])
.constant("mod1Constant", "module 1 constant");
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.11/angular.min.js"></script>
<div ng-app="myApp">
<div ng-controller="newController">
{{myText1}}
</div>
<div ng-controller="newController2">
{{myText2}}
</div>
</div>
Мой вопрос заключается в основном: почему controller2
работу?
Ни в коем случае не module1
впрыскивается в controller2
, но, похоже, контроллер имеет доступ к пространству имен.
Кажется, что, вводя модуль в любом месте, вы можете получить доступ к нему повсюду, что заставляет меня задаться вопросом, что такое точка модулей. Является ли инъекция зависимостей более похожей на сброс всех зависимостей в общий ведро, а не на создание дерева зависимостей? или я пропустил что-то реальное?
Спасибо за простой ответ. Это вдохновило меня взвесить возможность начать работу с Angular 2. Пошел в документацию и увидел, что все это документировано в машинописном машинописном документе, которое мне нужно будет изучить, прежде чем я смогу даже понять праймер. Такого рода ветер вывел из моих парусов. –
Вам не нужно использовать TypScript (и вы можете изменить документацию на JS), но мне это действительно нравится. Может быть, потому, что мне нравится Java :) – yarons
Да, я это понимаю, но если вся документация находится в TypScript, с ней будет намного легче учиться. Сейчас я читаю праймер Typsecript. Это выглядит довольно красиво и не особенно сложно. –