Предполагаемая инъекция
Этот метод впрыска требует обеспечения того, чтобы имя параметра было таким же, как и имя службы. Если код должен быть сжат и т. Д., Инъекция потерпит неудачу.
app.controller ("myctrl1", function ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); hello2.hello ();}});Маркерная инъекция
Этот метод впрыска требует установки массива зависимостей, который содержит имя службы зависимостей. В параметрах функции вы можете установить имя параметра по желанию, но должна быть обеспечена согласованность порядка.
var myctrl2 = function ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); hello2.hello (); }} myctrl2. $ injector = ['hello1', 'hello2']; app.controller ("myctrl2", myctrl2);Встроенная инъекция
Этот метод впрыска непосредственно проходит в двух параметрах, один - это имя, а другой - массив. Последним параметром этого массива является реальное тело метода, а остальное - все зависимости, но необходимо убедиться, что параметры в теле метода находятся в одном порядке (так же, как инъекция марки).
app.controller ("myctrl3", ['$ scope', 'hello1', 'hello2', function ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); hello2.hello ();}}]);Общие методы инжектора $
В угловом инжектор может быть получен через Angular.Injector ().
var $ injector = angular.injector ();
Получите имя службы зависимостей через $ injector.get ('serviceName')
$ injector.get ('$ scope')
Получить все зависимости xxx от $ injector.annotate ('xxx')
$ injector.annotate (xxx)
Пример кода
<html> <Head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"/> <script src = "http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"> </script> </hadape> </"ngApp> </" ngApp> </"ngApp> </ngApp> </" ngApp> </ngApp. <div ng-controller = "myctrl1"> <input type = "button" ng-click = "hello ()" value = "ctrl1"> </input> </div> <div ng-controller = "myctrl2"> <input type = "ng-click =" hello () "ctrl2" ng-controller = "myctrl3"> <input type = "ng-click =" hello () "value =" ctrl3 "> </input> </div> <script type =" text/javascript "> var app = angular.module (" myApp ", []); app.factory ("hello1", function () {return {hello: function () {console.log ("hello1 service");}}}); app.factory ("hello2", function () {return {hello: function () {console.log ("hello2 service");}}}); var $ injector = angular.injector (); console.log (angular.equals ($ injector.get ('$ injector'), $ injector)); // true console.log (angular.equals ($ injector.invoke (function ($ injector) {return $ injector;}), $ injector); // true // infered // $ injector. app.controller ("myctrl1", function ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); hello2.hello ();}}); // аннотирован // функция явно (Servicea) {}; // explicit. $ inject = ['servicea']; // $ injector.invoke (явно); var myctrl2 = function ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); hello2.hello (); }} myctrl2. $ injector = ['hello1', 'hello2']; app.controller ("myctrl2", myctrl2); // inline app.controller ("myctrl3", ['$ scope', 'hello1', 'hello2', function ($ scope, hello1, hello2) {// app.controller ("myctrl3", ['$ scope', 'hello1', 'hello2', function (a, b, c) {//a.hello (). C.Hello ();Выше приведено сборник информации об инжекторе AngularJS. Мы будем продолжать добавлять соответствующую информацию в будущем. Спасибо за поддержку этого сайта!