2015-01-22 4 views
1

Просто, чтобы упомянуть, что я очень новичок в Angularjs.

При написании контроллера, я вижу, я могу использовать

controller('MyController', ['$scope', function($scope) {}]) 

или

controller('MyController', function($scope) {}) 

В чем разница между обоими?

+0

оба являются для той же цели. позже может произойти сбой, если вы запутаете код. –

+0

[AngularJS '** 'Замечание по вопросам минимизации ** ** (https://docs.angularjs.org/tutorial/step_05#a-note-on-minification) – ryeballar

ответ

2

Это в основном используется для минимизации. Когда вы Minify, ИС

controller('MyController', function($scope) {})

будут преобразованы в

controller('MyController', function(a) {}) 

и это даст ошибку для неопределен. Когда вы указываете зависимость как

controller('MyController', ['$scope', function($scope) {}]) 

оно будет отображаться в пределах $ scope, и оно будет работать нормально.

5

Оба эти же.

Когда код javascript минимизирован, все локальные переменные в функции изменяются на меньшие переменные для уменьшения размера. например.

function (largevariablename){ 
    largevariablename = 123; 

} 

будут преобразованы в

function (a){ 
    a= 123; 
} 

Но в случае, если угловой $ Прицел уменьшенная в с. Затем инъекция зависимости не выполняет поиск s. Таким образом, угловая форсунка будет вводить значение найденной строки в массиве, и внедрить его вместо локального varaiable в определении его ниже пути

controller('MyController', ['$scope', function($scope) {}]) 

Так упаковывает, если ваш код в не будет минимизирован вы можете использовать простая версия

контроллер («MyController», функция ($ сфера) {})

1

в самом деле, вы не должны использовать обратные вызовы (анонимные функции) непосредственно для определения контроллеров.

Вы должны использовать отдельные функции и модуль ввода $, чтобы вручную идентифицировать ваши зависимости.

controller('MyController', MyController); 

MyController.$inject = ['$scope']; 

function MyController($scope){ 

}; 

Зачем использовать указанные функции?

Это дает более читаемый код, намного легче отлаживать и уменьшает количество вложенного кода обратного вызова.

Зачем использовать $ injection?

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

Кроме того, это защищает ваши зависимые от уязвимости до вопросов минимизации, когда параметры могут быть искалечены.

Это извлекается из хорошо знаю John Papa Angularjs Style Guide

Смежные вопросы