AngularJS: Должен ли я преобразовать функцию связывания директивы в контроллер?
Я слышал, что это хорошая практика, чтобы использоватьcontrollerAs
синтаксис вместе сbindToController: true
в директивах, которые используют изолированную область. Рекомендации:один, два
Предположим, у меня есть такая директива:
angular.module('MyModule').directive('MyDirective', function(User) {
return {
scope: {
name: '='
},
templateUrl: 'my-template.html',
link: function(scope) {
scope.User = User;
scope.doSomething = function() {
// Do something cool
};
}
};
});
<!-- my-template.html -->
<div>
User Id: {{ User.id }}
Name: {{ name }}
<button ng-click="doSomething()">Do it</button>
</div>
Как видите, в этой директиве нет контроллера. Но, чтобы иметь возможность использоватьcontrollerAs
а такжеbindToController: true
У меня должен быть контроллер.
Является ли лучшая практика для преобразования функции связывания в контроллер?
angular.module('MyModule').directive('MyDirective', function(User) {
return {
scope: {
name: '='
},
templateUrl: 'my-template.html',
bindToController: true,
controllerAs: 'myCtrl',
controller: function() {
this.User = User;
this.doSomething = function() {
// Do something cool
};
}
};
});
<!-- my-template.html -->
<div>
User Id: {{ myCtrl.User.id }}
Name: {{ myCtrl.name }}
<button ng-click="myCtrl.doSomething()">Do it</button>
</div>
Насколько я понимаю, контроллер директивы должен использоваться в качестве механизма для представления API директивы для связи директива-директива.
Может ли кто-нибудь пролить свет на лучшую практику в наши дни, имея в виду Angular 2.0?