AngularJS で controllerAs 構文を使用する場合、ng-click などのハンドラーを定義するのに最適な場所はどこですか? コントローラーまたはスコープ (リンク関数で定義) で?
それで、あなたは使用しますか:
angular.module('app', []).
controller('myDirective', function(){
return {
template: '<div><button ng-click=vm.onClick()></button></div>',
controller: function(){
var vm = this;
vm.onClick = function(){
vm.myValue = vm.doSomethingFancy();
};
this.doSomethingFancy = function(){};
}
}
});
または:
angular.module('app', []).
controller('myDirective', function () {
return {
template: '<div><button ng-click=onClick()></button></div>',
require: 'myDirecive',
controller: function () {
var vm = this;
this.doSomethingFancy = function () {
vm.myValue = 'somethingfancy';
};
},
link: function (scope, elem, attr, ctrl) {
scope.onClick = function () {
ctrl.doSomethingFancy();
}
}
}
});
コントローラーは値を割り当てるだけで、イベント処理はリンク関数で行われるため、私は実際には2番目のものを気に入っています。
とにかく...あなたの考えを教えてください。