2016-01-26 3 views
4

Рассмотрим приведенные ниже примеры. Они работают по-другому?Угловые определяющие параметры дважды

.controller('MyController',function($scope) { 
    $scope.username = 'World'; 

    $scope.sayHello = function() { 
    $scope.greeting = 'Hello ' + $scope.username + '!'; 
    }; 
}); 

Vs

.controller('MyController', ['$scope', function($scope) { 
    $scope.username = 'World'; 

    $scope.sayHello = function() { 
    $scope.greeting = 'Hello ' + $scope.username + '!'; 
    }; 
}]); 

Они выдают то же самое для меня, я просто не понимаю, почему мы его туда. Иногда я должен использовать его как объект для работы. Зачем определять его дважды?

ответ

6

Это интересный вопрос. Ответ - это то, что работает в локальной среде. Но ..

Атрибут массива полезен, когда вы минимизируете/обфускации файлов JavaScript для выпуска продукции. В этом случае аргумент $ scope может быть переименован в $ s, но поскольку мы определили строку «$ scope» как первый аргумент, Angular знает, что первая зависимость от этого контроллера - объект $ scope.

Так что до тех пор, пока вы не напишете что-то, что для внутренней цели, используйте обозначение массива, которое рекомендуется! :)

См образом: http://viralpatel.net/blogs/angularjs-controller-tutorial/

+0

Кроме того, с помощью обозначения массива улучшает тестируемость. – DonJuwe

+0

Спасибо !!! :) – Alice

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