Ответ 1
Я не знаю фактической причины этого синтаксиса, но я предполагаю, что он имеет отношение к последовательности - вы должны иметь возможность использовать один и тот же синтаксис независимо от того, где вам нужно вводить службы.
В большинстве мест используется синтаксис в вашем примере: module.controller
, module.factory
и т.д. В этих местах синтаксис может выглядеть как requirejs.
Однако при определении директивы вы также можете вводить сервисы в свой контроллер. Обычно это делается, если директивный контроллер будет использоваться другими директивами, например. директива ngModel
.
module.directive('myDirective', function () {
return {
controller: ['$scope', '$element', function ($scope, $element) {
// ...
}]
};
});
В этом случае вы не можете использовать стиль requirejs, но стиль массива работает. Я думаю, это может быть одной из причин, по которой синтаксис такой, какой он есть. Могут быть и другие.
В качестве дополнительной заметки вы можете определить контроллер директивы как обычный контроллер, но это делает код более подробным, плюс вы можете потенциально использовать контроллер в других местах, кроме директивы.
module.controller('myDirectiveCtrl', ['$scope', '$element', function ($scope, $element) {
// ...
}]);
И затем определите директиву.
module.directive('myDirective', function () {
return {
controller: 'myDirectiveCtrl'
};
});