次のディレクティブがあるとします。
app.directive('person', function() {
return {
restrict: 'E',
controller: function($scope) {
$scope.sayHi = function() {
console.log('hi');
}
this.sayBye = function() {
console.log('goodbye')
}
},
link: function(scope, element, attrs) {
},
template: '<p ng-click="sayHi()">Hello</p>'
}
});
要素がクリックsayHi()
されると、 にアタッチされているため、 が呼び出されます$scope
が、sayBye
メソッドは機能しません。
私の質問:
$scope にアタッチすることによって達成されるテンプレートからコントローラ メソッドを呼び出す唯一の方法はありますか?
もしそうなら、これは同じようにスコープにアタッチされる可能性のある他のディレクティブ関数と衝突するリスクを冒していませんか、それとも各ディレクティブは独自のスコープを持っていますか?
this
を介して他のディレクティブがそれらのメソッドにアクセスできるようにするためにメソッドをアタッチする唯一の理由はありrequire
ますか?
可能であればディレクティブ ロジックをカプセル化するのが最善であると想定しているため、アドバイスをいただければ幸いです。