Я хотел бы использовать опцию 'controllerAs' в моих директивах. Позвольте мне привести аргументы из "" Руководство по стилю AngularJS для пользователей Closure в Google":
Почему? Ввод методов и свойств непосредственно на контроллер, вместо создания объекта области, лучше подходит для Google Закрытие стиля класса. Кроме того, использование "controller as" делает его очевидный, к какому контроллеру вы обращаетесь, когда несколько контроллеров применим к элементу. Поскольку всегда есть ".". в привязках, вы не нужно беспокоиться о прототипальных примитивах маскирования наследования.
Но я вижу проблему с использованием этого подхода, если директива изолирует привязки к области.
angular.module('cmw').directive('fooWidget', function() {
return {
controller: function() {
this.qux = '123';
},
controllerAs: 'fooWidget',
scope: {
bar: '='
},
template: ' {{fooWidget.qux}} {{bar}} '
};
});
В этом случае свойство bar
привязано к области действия, а не к контроллеру, что приводит к запутанной непоследовательной ситуации, когда различные свойства следует искать в разных местах. Каков "официальный" рекомендуемый способ обойти это?
ОБНОВЛЕНИЕ: см. вопрос GitHub об этом.