8

ユーザーがログアウトしたら、$rootScope をクリーンアップする必要があります。試してみ$rootScope.$destroy()ましたが、うまくいきませんでした。$rootScope のすべての値をループして削除する方法、または単純にリセットする方法はありますか?

4

3 に答える 3

9

初期化時のデフォルト値を保持したい$rootScope場合があります。それらはすべて a で始まるため、で始まら$ないすべてのプロパティを削除できます$

for (var prop in $rootScope) {
    if (prop.substring(0,1) !== '$') {
        delete $rootScope[prop];
    }
}

の関数として追加することで、簡単に呼び出すことができます$rootScope

$rootScope.$resetScope = function() {
    ...
}
于 2015-06-18T05:08:45.207 に答える
4
  • 実際、この$destroy()メソッドは $rootScope (こちらを参照) では機能しません。アプリでAngularインスタンス全体を削除するの$rootScope.$broadcast("$destroy")ではなく、呼び出すことでこれを回避しました。.$destroy()このようにして、すべてのデストラクタが同じように呼び出されます。

  • 要素の $destroy イベントについては、ほんの数日前までは気がつかなかったことを認めなければなりません…ドキュメントのどこにも見たことがありませんでした。さらに、jQuery を使用しているので、ここ によればそうなるでしょう。とにかく私のために働きます。

ここから参照

それは長い説明ですが、RootScope以下の方法を使用して手動でクリアできます

オプション1

rootScope 変数をクリアする

$rootScope.currentStatus = ""; //or undefined 

オプション 2

$rootscope オブジェクト全体を削除する場合は、

 $rootScope=undefined //or empty 
于 2015-06-18T04:56:00.963 に答える
2

rootScope から変数を削除するには

delete $rootScope.variablename
于 2015-06-18T04:54:39.403 に答える