2013-09-19 2 views
5

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

angular.module('app').controller('GeneralCtrl', 
    function($scope, $location, exampleService) { 
     $scope.variable = exampleService.getExampleVariable(); 
    }   
); 

angular.module('app').controller('GeneralCtrl', 
    ['$scope', '$location', 'exampleService', function($scope, $location, exampleService) { 
     $scope.variable = exampleService.getExampleVariable(); 
    }] 
); 

В чем разница между ними? Где бы вы использовали их по-другому? Зачем?

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

+2

Разница заключается в минимизации. – AlwaysALearner

+0

Разве это единственная разница? –

+0

Read DI http://docs.angularjs.org/guide/di – Chandermani

ответ

4

Это то, что Угловые называет «встроенную нотацию» для инъекции зависимостей (см. http://docs.angularjs.org/guide/di для получения подробной информации).

В примере вы дали, то ng-controller директива фактически делает работу за кулисами, из подключения $scope, $location и exampleService в переменные вы предоставляете к этому первому function. Это делается по умолчанию на основе имен переменных (то есть предполагается, что переменная с именем $scope запрашивает зависимость $scope).

При этом, когда вы уменьшаете свой код, имена переменных также сокращаются (то есть $scope может стать a). Когда это произойдет, Angular теперь не знает, что вы имели в виду под переменными.

Одним из вариантов является добавление

GeneralCtl.$inject('$scope', '$location', 'exampleService') 

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

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