10

Angular では、スコープは DOM 要素に関連付けられています。を呼び出すと$element.remove()$element.scope().$destroy()同様に呼び出されることになりますか? それとも、開発者は自分でスコープをクリーンアップする責任がありますか?

これにより、DOM要素を削除すると、スコープが自動的に削除されるはずだと思います。

angular.js

/////////////////////////////////////////////
// jQuery mutation patch
//
//  In conjunction with bindJQuery intercepts all jQuery's DOM destruction apis and fires a
// $destroy event on all DOM nodes being removed.
//
/////////////////////////////////////////////

function JQLitePatchJQueryRemove(name, dispatchThis) { /* ... */ }
4

1 に答える 1

4

編集:

Angular 1.2.X は$destroy を呼び出すように JQuery にパッチを適用するようになりました

ただし、以前と同じ結果が得られるかどうかはテストしていません。

(コメントでこれを指摘してくれた@KumarHarshに感謝します)


古い回答 (Angular 1.0.X):

いいえ、$element.remove()スコープを削除しません。おそらく、スコープがまだ他のスコープによって参照されているためです。

ネストされたコントローラからスコープ要素を削除できる証拠として、親コントローラからスコープをロードし$$childHead、子スコープがまだ存在することを確認してください。

ここにデモンストレーションするプランクがあります

また、Chrome 用の Batarang プラグインを使用して、メモリ内のスコープを表示できます。

于 2012-11-21T03:22:02.533 に答える