0

私は最終的にelement.addEventListener(<event>, handler);AngularJS:ディレクティブによって追加された要素からイベントハンドラを削除するにはどうすればよいですか?

経由のリンク()関数内の要素の特定のイベントのイベントリスナーを追加する属性ディレクティブを持っているが、私は動的に私のコントローラ内のロジックに基づいて、これらのハンドラを削除したいです。これどうやってするの?私はコントローラ内の要素に対してremoveEventListenerを呼び出すことを検討しましたが、私の指示にあるので、ハンドラ関数への参照はありません。

+0

ディレクティブも削除覚えて、その、リスナーを持っているかどうかを判断するためのフラグを使用してのように、またはあなたが$発するまたはブロードキャスト$を使用することができます –

+0

リスナーを追加/削除するAPIを露出させることにより行うためのオプションを提供する必要がありますメモリリークを避けるために$ on( '$ destroy'、...) –

+0

@EvgenyPopovは、ページから要素を削除する場合にのみ使用できますか?これらの要素は、ページが閉じられる/ビューが変更されるまでページに残ります。 – PDN

答えて

1

最後にイベントハンドラを削除することができます。

scope.$on('$destroy', function() { 
     //Code to remove Event  
}); 

そして、あなたが間にそれを削除したい場合、あなたはディレクティブと放送内部のイベントのために聞くことができるか、お好きな時にコントローラからを発します。

関連する問題