私は指示のコントローラーで$scope.$watch
を宣言しています。ページを変更してディレクティブが削除されたら、手作業で破壊する必要がありますか?もしそうなら、どのように指令が削除されたかを検出するのですか?Angularjs指令は時計を取り外しますか?
答えて
これは、ディレクティブではなくスコープによって異なります。スコープが破棄された場合、その$ watcherはすべてそのスコープで終了します。あなたのスコープは角度によって破壊されるので、あなたは安全でなければなりません。
スコープが終了すると、$ destroyイベントが発生します。あなたはそれを見ることができます。
$scope.$on('$destroy', callback);
と、手動でそれが返す関数を呼び出すことで、範囲から$ウォッチャーを切り離すことができます。
var sentinel = $scope.$watch('expression', callback);
sentinel(); // kill sentinel
あなたはあまりにも上の$でこれを行うことができます。
まず、スコープが破壊されると、すべてのウォッチャーがそれで死ぬと言いました。次にスコープ$ destroyイベントでウォッチャーを手動で削除するように提案しました(なぜ?スコープで自動的に死ぬはずです)。それは私には意味がありません。どうぞあなたは詳しく教えていただけますか? – hendrix
ngViewでページを変更すると、最後のスコープがウォッチャーでクリーンアップされます。 (proof => http://goo.gl/GD0pM9) また、angleはウォッチャー破棄関数を提供しますので、現在のスコープでそれを必要としない場合は手動で式を削除することができます。 – Oliver
- 1. Angularjsコントローラ指令
- 2. AngularJS指令値
- 3. は、YouTubeのAngularJS指令
- 4. AngularJSは指令による申告時に再確認します
- 5. AngularJS:指令の縮小問題
- 6. AngularJS指令の完全なリスト?
- 7. AngularJSフォーム検証指令$ setValidity on element
- 8. AngularJS指令 - ng-repeat内のテンプレート置換
- 9. ng-transcludeを含むAngularJs指令テンプレートはコンパイルできません
- 10. AngularJS ng-keydown指令は<input>コンテキストでのみ動作しますか?
- 11. AngularJSのng-repeat指令でテンプレートを動的に表示していますか?
- 12. コントローラからのangularjs指令にオブジェクトを渡す
- 13. AngularJS指令:テンプレートをコンパイルしてスコープを見る
- 14. Replaceをtrueに設定した指令をAngularJSがテストします
- 15. AngularJS指令テンプレートでJavascriptを実行しない
- 16. ng-repeat not rederingを使用したAngularJS指令
- 17. AngularJS指令が私の見解は単純ですテンプレート
- 18. AngularJS:同じ指令で消毒してリンカーできる?
- 19. AngularJS指令のアニメーションイベントが起動しない
- 20. 指令でng-clickを追加するAngularJS
- 21. 条件の配列を管理するためのAngularJS指令がありますか?
- 22. AngularJS指令名は数字で始まり、動作させることはできません。ここ
- 23. AngularJS:指令 - ここで私が作成したディレクティブがあります引用符
- 24. 同じファイル内にある場合、指令のAngularjsサービスは不明です
- 25. NHAML指令
- 26. 角度指令
- 27. AngularJS:指令制限: 'E'はジャスミンユニットテストで呼び出される要素click()イベントを防止します
- 28. Angularjs 2で動的なタブを実装する方法再帰指令/コンポーネントで
- 29. ショートストリング用のDelphiコンパイラ指令は機能しませんか?
- 30. FEATURE_PALコンパイラ指令とは、.net 4のソースコードを意味します。
角はあなたのためにそれを配慮する必要があります –