ユーザーがディレクティブにメソッド名を与え、そのディレクティブに でそのメソッドを作成させ、そのメソッドのscope
呼び出しを処理できるようにする方法はありますか?
したがって、最初にユーザーにメソッド名HELLO
を定義させ、次にユーザーに別の場所から呼び出しさせHELLO
ます (同じスコープ内にあります)。
<div ng-controller="AppController">
<div mydirective="" mydirective-data="MyJson" mydirective-fx="HELLO" />
<button ng-click="HELLO()">Click me</button>
</div>
内部的には、ディレクティブは を見てHELLO
、それを独自のメソッドにマップする必要があります。ディレクティブでは、渡されるメソッド名を見て、それを割り当てています
app.directive('mydirective', function() {
return {
restrict: 'A',
scope: {
data: '=mydirectiveData',
fx: '=mydirectiveFx'
},
link: function(scope, element, attrs) {
scope.fx = function () { console.log(scope.data); } ;
}
}
}
);
ご覧のとおり、コントローラーで定義された を読み取る関数に を割り当てscope.fx
ていますHELLO
。scope.data
これを試みても何も実行されず、エラーもスローされません。私はこれを間違った方法でやっているのだろうかと思います。
わかりやすくするために、plunkerを作成しました。コンソールを開くことを忘れないでください。