2016-11-30 13 views
1

私はブラウザ(chrome)でアプリケーションをテストしていますが、古いビュー/キャッシュをクリアする際に問題があります。だから、これは私が私のアプリからログアウト一部です:イオンの履歴を正しくクリアするには?

enter image description here

を私がログアウト]をクリックしたときに、見ることができるように、これはコードの焼成である:

Auth.$signOut().then(function(){ 
     $ionicHistory.nextViewOptions({ 
       disableBack: true, 
       historyRoot: true 
     }); 
     $ionicHistory.clearHistory(); 
     $ionicHistory.clearCache(); 
     $state.go('login'); 
    }); 

とき、これはしかし作品

$ionicHistory.nextViewOptions({ 
    disableBack: true 
}); 
$ionicHistory.clearHistory(); 
$ionicHistory.clearCache(); 
$state.go("menu.myReports"); 

また、動作しますが、私はログアウトする前に、私はまだこれと同じビューを参照してください:

私は、ログインページに再度ログインしようとすると、これはどのような火災です

enter image description here

の代わりにちょうど:

enter image description here

私は私がサインアウトしたときに、すべての歴史、キャッシュまたは何をクリアしたいです。それも可能ですか?私のデータベースはAngularFireです。

+1

firebaseからの認証を使用していますか? – m1crdy

+0

@ m1crdyはい、電子メールとパスワードの認証です。 – FewFlyBy

答えて

1

まあ、これは古い問題であるが、2017年以降に来るの人のために、私は本当に何が起こるか、それを解決する方法を説明します:

$ ionicHistory.clearCache(のコード):

clearCache: function(stateIds) { 
return $timeout(function() { 
$ionicNavViewDelegate._instances.forEach(function(instance) { 
instance.clearCache(stateIds); 
}); 
}); 
}, 

ご覧のとおり、stateIdの配列である1つのパラメータcllaed stateIdsが必要です。実際、私はstateIdがstateName以上であることを知りたいと苦労しました。

だから、もっと深く考えましょう。

self.clearCache = function(stateIds) { 
var viewElements = $element.children(); 
var viewElement, viewScope, x, l, y, eleIdentifier; 
for (x = 0, l = viewElements.length; x < l; x++) { 
viewElement = viewElements.eq(x); 

    if (stateIds) { 
    eleIdentifier = viewElement.data(DATA_ELE_IDENTIFIER); 

    for (y = 0; y < stateIds.length; y++) { 
     if (eleIdentifier === stateIds[y]) { 
     $ionicViewSwitcher.destroyViewEle(viewElement); 
     } 
    } 
    continue; 
    } 

    if (navViewAttr(viewElement) == VIEW_STATUS_CACHED) { 
    $ionicViewSwitcher.destroyViewEle(viewElement); 

    } else if (navViewAttr(viewElement) == VIEW_STATUS_ACTIVE) { 
    viewScope = viewElement.scope(); 
    viewScope && viewScope.$broadcast('$ionicView.clearCache'); 
    } 

} 
}; 

`

そして、あなたがコード内で見ることができるように、このclearCacheはクリアしません:「instance.clearCache(のstateids)」上記の行で使用される$ ionicNavView.clearCacheのコードがありますALL CACHESではなく、stateIds配列の値と一致するすべてのキャッシュされたビューを破棄します。パラメータがない場合は、実際の見解を破棄する必要があります。

これを解決するには、イオンの方法だけを使用して、配列内のすべての状態名をパラメータとして$ ionicHistory.clearCache()を呼び出します。

例えば:

$ ionicHistory.clearCache([ 'ログイン'、 'マップ'、 'ホーム']); 私は以前にこのコードに掘られていなかったイオニア開発者を信じることはできません。 私は誰かがこれを利用したいと思っています。

+1

うわー。最後に。それは実際に働いた! – FewFlyBy

関連する問題