3

次のディレクティブがあるとします。

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メソッドは機能しません。

私の質問:

  1. $scope にアタッチすることによって達成されるテンプレートからコントローラ メソッドを呼び出す唯一の方法はありますか?

  2. もしそうなら、これは同じようにスコープにアタッチされる可能性のある他のディレクティブ関数と衝突するリスクを冒していませんか、それとも各ディレクティブは独自のスコープを持っていますか?

  3. thisを介して他のディレクティブがそれらのメソッドにアクセスできるようにするためにメソッドをアタッチする唯一の理由はありrequireますか?

可能であればディレクティブ ロジックをカプセル化するのが最善であると想定しているため、アドバイスをいただければ幸いです。

4

1 に答える 1