角度ベースがバインドされているウォッチャーとスコープイベントのバインドを自動的に解除する$scope.$on(...)
か$scope.$watch(...)
、またはスコープが破棄されるかを理解しようとしていますか?
次のコードがあるとします。
$scope.$on('someEvents', handleSomeEvent);
$scope.$watch('someProperty', handleSomePropertyChange);
$ destroyイベントがスコープでトリガーされたときに、これらのウォッチャーとイベントを手動でバインド解除する必要がありますか?
'$ destroy()'は、スコープとその子スコープを親から永続的に切り離して、呼び出しによるモデル変更検出とリスナー通知への参加を停止する必要がある場合に、スコープで呼び出す必要があります。
また
削除は、現在のスコープがガベージコレクションの対象であることも意味します。
したがって、それ$destroy()
が呼び出されると、すべてのウォッチャーとリスナーが削除され、スコープを表すオブジェクトがになるようeligible for garbage collection
です。
私たちが見ればdestroy()
ソースコード我々は、行が表示されます:
forEach(this.$$listenerCount, bind(null, decrementListenerCount, this));
これはすべてのリスナーを削除することになっています。
@glepretreで述べたように、コントローラーのウォッチャーとリスナーに適用されます。上記の同じドキュメントページには、次のように記載されています。
AngularJSには、要素がDOMから削除される前にDOMバインディングをクリーンアップするために使用できる$ destroy jQueryイベントもあることに注意してください。
ディレクティブに特定のリスナーがある場合は、$destroy
イベントをリッスンして、必要なクリーンアップを自分で行う必要があります
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加