angular.js $ destroyイベント-手動でバインドを解除する必要がありますか?

Vytautas Butkus:

角度ベースがバインドされているウォッチャーとスコープイベントのバインドを自動的に解除する$scope.$on(...)$scope.$watch(...)またはスコープが破棄されるを理解しようとしていますか?

次のコードがあるとします。

$scope.$on('someEvents', handleSomeEvent);
$scope.$watch('someProperty', handleSomePropertyChange);

$ destroyイベントがスコープでトリガーされたときに、これらのウォッチャーとイベントを手動でバインド解除する必要がありますか?

イゴール・マリク:

Angularのドキュメントに$scopeよると

'$ destroy()'は、スコープとその子スコープを親から永続的に切り離して、呼び出しによるモデル変更検出とリスナー通知への参加を停止する必要がある場合に、スコープで呼び出す必要があります。

また

削除は、現在のスコープがガベージコレクションの対象であることも意味します。

したがって、それ$destroy()が呼び出されると、すべてのウォッチャーとリスナーが削除され、スコープを表すオブジェクトがになるようeligible for garbage collectionです。

私たちが見ればdestroy() ソースコード我々は、行が表示されます:

forEach(this.$$listenerCount, bind(null, decrementListenerCount, this));

これはすべてのリスナーを削除することになっています。

@glepretreで述べたように、コントローラーのウォッチャーとリスナーに適用されます。上記の同じドキュメントページには、次のように記載されています。

AngularJSには、要素がDOMから削除される前にDOMバインディングをクリーンアップするために使用できる$ destroy jQueryイベントもあることに注意してください。

ディレクティブに特定のリスナーがある場合は、$destroyイベントをリッスンして、必要なクリーンアップを自分で行う必要があります

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Angular $ destroy-ドキュメントではイベントのバインドを手動で解除することを推奨していますが、コードはそれ以外のことを示しています

分類Dev

Angular 2をホストするために本番サーバーにNode.jsをインストールする必要がありますか?

分類Dev

Angular.jsアプリの場合-WebAPIが提供するモデルにバインドする必要があります

分類Dev

AngularJSをAWSS3バケットにデプロイして、そこでルーティングが機能することを期待できますか、それともEC2を使用する必要がありますか?そして、「静的なAngular jsページ」とは何ですか?

分類Dev

oidc-client.jsを使用するAngularアプリケーションでは、2番目のタブでログインする必要があります

分類Dev

Angular js、イベントをブロードキャストし、それが完了するのを待ちます

分類Dev

Angularのイベントバインディングに「$ event」キーワードを使用する必要があるのはなぜですか?(出力用)

分類Dev

本番環境の最後にjsファイルをバンドルする必要がありますか

分類Dev

どのjs / cssファイルをバンドルする必要がありますか?

分類Dev

JSインポート(Vue.js / Nuxt.js)で@または〜を使用する必要がありますか?

分類Dev

keypressイベントはFFのAngularディレクティブで機能する必要がありますか?

分類Dev

Angular.js:「変更」イベントをサービスにバインドする方法

分類Dev

Angular 2の複数のイベントに簡潔にバインドする方法はありますか?

分類Dev

Angular 2の複数のイベントに簡潔にバインドする方法はありますか?

分類Dev

ルートAngularコンポーネントのオブザーバブルの購読を解除する必要がありますか?

分類Dev

Hammer.JSイベントを手動でトリガーしますか?

分類Dev

ドロップダウンでイベントを変更すると、Angular jsでエラーが発生します

分類Dev

手動でぼかしイベントを追跡せずに、フォーム入力をBackbone.jsのモデルにバインドできますか?

分類Dev

Angular Form statusChanges / valueChanges observableのサブスクライブを解除する必要がありますか?

分類Dev

Angular4-setTimeout呼び出しのサブスクライブを解除する必要がありますか?

分類Dev

Node.jsでイベントを「食べる」方法はありますか?

分類Dev

Angular 4でログインするためのサービスを作成する必要がありますか?

分類Dev

sigma.jsバインドイベントからangular2コンポーネント関数を呼び出す

分類Dev

Angularはthis.activateRouteサブスクリプションからサブスクライブを解除する必要があります

分類Dev

ドライバは手動でインストールする必要がありますか、それとも外部アプリケーションを介してインストールする必要がありますか?

分類Dev

node.jsプロジェクト用にnginxサーバーでドメインを設定する必要があります

分類Dev

angula-cliを(グローバルに)インストールした場合、angularをインストールする必要がありますか?

分類Dev

jQueryのdocument.readyにknockout.jsバインディングハンドラーを配置する必要がありますか

分類Dev

Ubuntu20.04にAMDGPUドライバーの更新を手動でインストールする必要がありますか?

Related 関連記事

  1. 1

    Angular $ destroy-ドキュメントではイベントのバインドを手動で解除することを推奨していますが、コードはそれ以外のことを示しています

  2. 2

    Angular 2をホストするために本番サーバーにNode.jsをインストールする必要がありますか?

  3. 3

    Angular.jsアプリの場合-WebAPIが提供するモデルにバインドする必要があります

  4. 4

    AngularJSをAWSS3バケットにデプロイして、そこでルーティングが機能することを期待できますか、それともEC2を使用する必要がありますか?そして、「静的なAngular jsページ」とは何ですか?

  5. 5

    oidc-client.jsを使用するAngularアプリケーションでは、2番目のタブでログインする必要があります

  6. 6

    Angular js、イベントをブロードキャストし、それが完了するのを待ちます

  7. 7

    Angularのイベントバインディングに「$ event」キーワードを使用する必要があるのはなぜですか?(出力用)

  8. 8

    本番環境の最後にjsファイルをバンドルする必要がありますか

  9. 9

    どのjs / cssファイルをバンドルする必要がありますか?

  10. 10

    JSインポート(Vue.js / Nuxt.js)で@または〜を使用する必要がありますか?

  11. 11

    keypressイベントはFFのAngularディレクティブで機能する必要がありますか?

  12. 12

    Angular.js:「変更」イベントをサービスにバインドする方法

  13. 13

    Angular 2の複数のイベントに簡潔にバインドする方法はありますか?

  14. 14

    Angular 2の複数のイベントに簡潔にバインドする方法はありますか?

  15. 15

    ルートAngularコンポーネントのオブザーバブルの購読を解除する必要がありますか?

  16. 16

    Hammer.JSイベントを手動でトリガーしますか?

  17. 17

    ドロップダウンでイベントを変更すると、Angular jsでエラーが発生します

  18. 18

    手動でぼかしイベントを追跡せずに、フォーム入力をBackbone.jsのモデルにバインドできますか?

  19. 19

    Angular Form statusChanges / valueChanges observableのサブスクライブを解除する必要がありますか?

  20. 20

    Angular4-setTimeout呼び出しのサブスクライブを解除する必要がありますか?

  21. 21

    Node.jsでイベントを「食べる」方法はありますか?

  22. 22

    Angular 4でログインするためのサービスを作成する必要がありますか?

  23. 23

    sigma.jsバインドイベントからangular2コンポーネント関数を呼び出す

  24. 24

    Angularはthis.activateRouteサブスクリプションからサブスクライブを解除する必要があります

  25. 25

    ドライバは手動でインストールする必要がありますか、それとも外部アプリケーションを介してインストールする必要がありますか?

  26. 26

    node.jsプロジェクト用にnginxサーバーでドメインを設定する必要があります

  27. 27

    angula-cliを(グローバルに)インストールした場合、angularをインストールする必要がありますか?

  28. 28

    jQueryのdocument.readyにknockout.jsバインディングハンドラーを配置する必要がありますか

  29. 29

    Ubuntu20.04にAMDGPUドライバーの更新を手動でインストールする必要がありますか?

ホットタグ

アーカイブ