ディレクティブに渡したい関数があります。ただし、ディレクティブは2つの場所で使用されます。最初の場所では、関数は2つのパラメーターを取り、2番目の場所では1つのパラメーターのみを取ります。
Function1(param1)
Function2(param1, param2)
ディレクティブのparam1にしかアクセスできません。Function1を返すようにFunction2を変更するにはどうすればよいですか?Function2の実装を次のように変更することを考えました。
Function2(param2) {
return function(param1) {
//do something with param2
}
}
そして、それを次のようにディレクティブに渡します。
function="Function2(param2)"
ただし、これにより、Angularダイジェストサイクルが無限ループになります。この問題を解決するにはどうすればよいですか?
まず、関数は予約語なので、属性名としては使用しません。次のようなスコープに別の属性を追加できます。function-params="[param1, param2]"
したがって、要素は次のようになります。
<my-directive func="myFunction" function-params="[param1, param2]"></my-directive>
angular.module('app').directive('myDirective', {
...
scope: {
func: '=',
functionParams: '='
},
link: function(scope){
scope.func.apply(null, scope.functionParams);
}
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加