Abgeleitete Injektion
Für diese Einspritzmethode muss sichergestellt werden, dass der Parametername mit dem Dienstnamen übereinstimmt. Wenn der Code komprimiert werden muss usw., schlägt die Injektion fehl.
app.Controller ("myctrl1", function ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); Hallo2.hello ();}});Markerinjektion
Für diese Injektionsmethode muss ein Abhängigkeitsarray festgelegt werden, das den Namen des Abhängigkeitsdienstes enthält. In Funktionsparametern können Sie den Parameternamen nach Belieben festlegen, aber die Bestellkonsistenz muss sichergestellt werden.
var myctrl2 = function ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); Hallo2.hello (); }} myctrl2. $ injector = ['hello1', 'hello2']; app.controller ("myctrl2", myctrl2);Inline -Injektion
Diese Injektionsmethode übergeht direkt in zwei Parametern, einer ist der Name und das andere ein Array. Der letzte Parameter dieses Arrays ist die reale Methodenkörper, und der Rest sind alle Abhängigkeiten. Es ist jedoch erforderlich, sicherzustellen, dass die Parameter in der Methodekörper in derselben Reihenfolge (gleiche wie Markeinspritzung) sind.
app.controller ("myctrl3", ['$ scope', 'hello1', 'hello2', function ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); Hallo2.hello ();}}]);Gemeinsame Methoden von $ Injector
In Angular kann der Injektor durch angular.injector () erhalten werden.
var $ injector = angular.injector ();
Holen Sie sich den Namen des Abhängigkeitsdienstes über $ injector.get ('serviceName').
$ injector.get ('$ scope')
Holen Sie sich alle Abhängigkeiten von XXX von $ iNjector.annotate ('xxx').
$ injector.annotate (xxx)
Beispielcode
<html> <kopf> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"/> <script src = "http://apps.bdimg.com/libs/angular.js/1.2.16/angular ng-controller = "myctrl1"> <Eingabe type = "button" ng-klick = "hello ()" value = "ctrl1"> </input> </div> <div ng-controller = "myctrl2"> <input type ng-controller = "myctrl3"> <Eingabe type = "button" ng-klick = "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 (Funktion ($ iNjector) {return $ $ injector;}), $ Injektor). app.Controller ("myctrl1", function ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); Hallo2.hello ();}}); // Annotated // Funktion explizit (servicea) {}; // explizit. $ inject = ['servicea']; // $ injector.invoke (explizit); var myctrl2 = function ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); Hallo2.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, b, c) {//1/awlo () () ({/b, c) {// // // // // // // // // //1/{//1/i.hell. C.Hello ();Das obige ist eine Zusammenstellung der Informationen von AngularJS -Injektor. Wir werden in Zukunft weiterhin relevante Informationen hinzufügen. Vielen Dank für Ihre Unterstützung für diese Website!