2016-03-29 18 views
2

Sind die beiden folgenden Beispiele gleichwertig?

1.

app.controller('ctrl',function($scope){}); 

2.

app.controller('ctrl',['$scope',function($scope){}); 

Ich bin neu in AngularJS. Von meinem Test aus machen sie dasselbe, aber nicht sicher, warum es zwei verschiedene Wege gibt.

+1

Werfen Sie einen Blick auf der offizielle eckige Entwickler Guide, insbesondere https://docs.angularjs.org/guide/di#dependency-annotation Dies ist eine gute Einführung auf alle wichtigen Konzepte in eckigen – Rhumborl

Antwort

2

Sie funktionieren auf die gleiche Weise, aber normalerweise wird die zweite Methode bevorzugt. Dies hat mit der Minimierung und der Tatsache zu tun, dass es bei der Verteilung Ihrer App eine Möglichkeit ist, dass Variablennamen geändert werden, wenn sie keine Elemente innerhalb eines Arrays sind.

Natürlich, wenn sich Ihre Controller-Namen während der Minification ändern, wird Angulars Abhängigkeitsinjektion fehlschlagen.

1

Sie sind beide gleichwertig und werden gut funktionieren. Je nachdem, was Sie mit Ihrem Projekt planen, können Sie eines auswählen. Es ist in erster Linie wichtig für die Verkleinerung, die zweite Notation zu verwenden, die Inline Array Annotation oder allgemeiner Dependency Annotation genannt wird.

Detaillierte Informationen zur Abhängigkeitsinjektion finden Sie in der AngularJS-Dokumentation here.

2

Dependency Injection ist eine großartige Eigenschaft von Winkel js auf verwendet, wenn tun JS minification,

Vor JS Minifizierung: ctrl.js

app.controller('ctrl'['$scope','$rootScope','$state',function($scope,$rootScope,$state){ 
    $scope.message="Hello World"; //Must be maintain serial of Dependency Injection either wise show error 

     }); 

Nach JS Minifizierung: ctrl.min.js

app.controller('ctrl'['$scope','$rootScope','$state',function(a,b,c){ 
a.message="Hello World"; 
    //So do not write $scope again just define 'a' instead of '$scope' like as $rootScope=b,$state=c ,so huge memory save in JS file. 

    });