Я слышал, что рекомендуется использовать синтаксис 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?