2016-01-12 5 views
1

Я слежу за несколькими учебниками об AngularJS, и я заметил, что существует несколько методов инициализации контроллера.AngularJS - Каков правильный синтаксис для инициализации контроллера?

Например, следующий код на основе документации AngularJS:

angular.module('todoList', []) 
.controller('todoListCtrl', ['$scope', 
    function ($scope) { 
     ... 
    } 
]); 

Однако, этот код работает:

angular.module('todoList', []) 
.controller('todoListCtrl', 
    function ($scope) { 
     ... 
    } 
); 

ли один метод предпочтительнее, чем другой?

ответ

1

Второй синтаксис не является безопасным. После того, как вы уменьшите значение, uglifier переименует $scope, что означает, что инжектор AngularJS не сможет правильно впрыскиваться, так как инжектор использует сопоставление имен для определения того, какая ошибка будет устранена.

Первый синтаксис был добавлен для исправления этой проблемы и является синтаксисом, который вы должны использовать для производственных приложений.

+0

Я никогда не слышал имя 'uglifier', это, вероятно, инструмент, который достался некоторым моим ex's –

+0

Closure, пакетам Grunt/gulp, RequireJS, Webpack ... у всех их есть« uglifier », который переименовывает кодовую базу в компактный. Например: https://www.npmjs.com/package/gulp-uglify –

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