AngularJS ng-click ディレクティブを変更して、いくつかの追加機能を追加することを検討しています。何に使用するかについていくつかの異なるアイデアがありますが、単純なものは、すべての ng-clicks に Google アナリティクスの追跡を追加することであり、もう 1 つはダブルクリックを防止することです。
これを行うために、最初に考えたのはデコレータを使用することでした。だから、このようなもの:
app.config(['$provide', function($provide) {
$provide.decorator('ngClickDirective', ['$delegate', function($delegate) {
// Trigger Google Analytics tracking here
return $delegate;
}]);
}]);
ただし、ディレクティブの式が満たされたときではなく、インスタンス化時にデコレータが起動されるため、これは機能しません。したがって、この場合、要素がクリックされたときではなく、ディレクティブを持つ要素がロードされたときに分析を行います。
それでは、本当の質問に進みます。ディレクティブがインスタンス化されている要素をデコレータが取得する方法はありますか? デリゲートから要素に到達できれば、自分のクリック イベントをバインドして、ng-click に加えてトリガーすることができます。
そうでない場合、すべての ng-clicks に何かを追加するにはどうすればよいですか?