2016-04-19 3 views
0

, was der Unterschied für das Controller-Argument ist, ist man Dienste und Rück Funktion in einem Array,was den Unterschied für das Controller-Argument ist, wird ein Dienst Einwickeln und Rück Funktion in einem Array

Es scheint, Typen 1 gehorcht die Umhüllung Trockenes Prinzip.

Ich verstehe nicht die Bedeutung des Unterschieds zwischen den folgenden 2 Syntax?

Typ 1

app.controller("UserCtrl", ['$scope', '$http', '$resource', 'Users', 'User', '$location', function($scope, $http, $resource, Users, User, $location) { 
    .... 
}]); 

Typ 2

app.controller("UserCtrl", function($scope, $http, $resource, Users, User, $location) { .... 
}); 
+0

Typ1 und Typ2 sind identisch. Type1 ist vollständig Controller und Type2 ist der kurze Weg, um den Controller zu schreiben. – DieuNQ

Antwort

1

Unterschied ist, wie Angular die Abhängigkeiten finden.

Mit Typ 1 verwendet Angular die Zeichenfolge, um Abhängigkeiten zu finden, so dass Sie Ihre eigenen Parameternamen haben können.

heißt

app.controller("UserCtrl", ['$scope', '$http', '$resource', 'Users', 'User', '$location', function(s, h, r, us, u, l) { 
.... 
}]); 

mit Typ-2, Angular verwendet die Parameternamen Abhängigkeiten zu finden, die Sie nicht verwenden können, was Namen Sie mögen, andernfalls, Angular nicht in der Lage sein, es zu finden.

Mehr auf https://docs.angularjs.org/guide/di

Dependency Annotation

Angular ruft bestimmte Funktionen (wie Fabriken und Service-Controller) über den Injektor. Sie müssen diese Funktionen mit Anmerkungen versehen, damit der Injektor weiß, welche Dienste in die Funktion eingefügt werden sollen. Es gibt drei Möglichkeiten, Ihren Code mit Service-Name-Informationen mit Anmerkungen versehen:

  • die Inline-Array Anmerkung Mit Hilfe von (bevorzugt)
  • die injizieren $ Mit Eigenschaft Anmerkung
  • Implizit aus den Funktionsparameternamen (hat Einsprüche)