AngularJs - внедрение $scope

Два примера ниже эквивалентны?

1.

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

2.

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

Я новичок в AngularJs. Из моего теста они делают то же самое, но не уверены, почему есть два разных способа.

3 ответа

Решение

Они будут работать одинаково, но обычно предпочтителен второй метод. Это связано с минимизацией и тем фактом, что когда вы распространяете свое приложение, возможно, имена переменных будут изменены, если они не будут элементами в массиве.

Конечно, если имена ваших контроллеров изменятся во время минимизации, это приведет к сбою внедрения зависимостей Angular.

Dependency Injection отличная особенность угловых js, используемых при минимизации JS,

До JS Minification: 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

       });

После JS Minification: 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.

   });

Они оба эквивалентны и будут работать просто отлично. Вы можете выбрать одно из другого, в зависимости от того, что вы планируете делать со своим проектом. Для минимизации в первую очередь важно использовать вторую нотацию, которая называется Inline Array Annotation или, в более общем случае, Dependency Annotation.

Вы можете найти подробную информацию о внедрении зависимостей в документации AngularJS здесь.

Другие вопросы по тегам