Injection déduite
Cette méthode d'injection nécessite de s'assurer que le nom du paramètre est le même que le nom du service. Si le code doit être compressé, etc., l'injection échouera.
app.Controller ("myctrl1", fonction ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); hello2.hello ();}});Injection de marqueur
Cette méthode d'injection nécessite la définition d'un tableau de dépendance, qui contient le nom du service de dépendance. Dans les paramètres de fonction, vous pouvez définir le nom du paramètre à volonté, mais la cohérence de l'ordre doit être assurée.
var myctrl2 = fonction ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); Hello2.hello (); }} myctrl2. $ injector = ['hello1', 'hello2']; app.Controller ("myctrl2", myctrl2);Injection en ligne
Cette méthode d'injection passe directement en deux paramètres, l'un est le nom et l'autre est un tableau. Le dernier paramètre de ce tableau est le corps réel de la méthode, et les autres sont toutes des dépendances, mais il est nécessaire de s'assurer que les paramètres du corps de la méthode sont dans le même ordre (identiques à l'injection de marque).
app.Controller ("myctrl3", ['$ scope', 'hello1', 'hello2', function ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); hello2.hello ();}}]);Méthodes courantes d'injecteur $
Dans Angular, l'injecteur peut être obtenu via Angular.Injector ().
var $ injector = angular.injector ();
Obtenez le nom du service de dépendance via $ injector.get ('ServiceName')
$ injector.get ('$ scope')
Obtenez toutes les dépendances de xxx par $ injecteur.annotate ('xxx')
$ injecteur.annotate (xxx)
Exemple de code
<html> <éadfr> <méta http-equiv = "contenu-type" content = "text / html; charset = utf-8" /> <script src = "http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"> </cript> ng-controller = "myctrl1"> <input type = "Button" ng-Click = "hello ()" value = "ctrl1"> </ entrée> </ div> <div ng-controller = "myctrl2"> <entrée type = "Button" ng-Click = "hello ()" value = "Ctrl2"> </put> </vrik = <div> ng-controller = "myctrl3"> <input type = "bouton" ng-click = "hello ()" value = "ctrl3"> </put> </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 ($ inject app.Controller ("myctrl1", fonction ($ scope, hello1, hello2) {$ scope.hello = function () {hello1.hello (); hello2.hello ();}}); // annotated // function explicit (Servicea) {}; // explicite. $ inject = ['Servicea']; // $ injecteur.invoke (explicite); var myctrl2 = fonction ($ 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 = function () {/ C.Hello ();Ce qui précède est une compilation des informations de l'injecteur angularjs. Nous continuerons d'ajouter des informations pertinentes à l'avenir. Merci pour votre soutien pour ce site Web!