他のページにアクセスするにはログインする必要があるアプリがあります。
最初のページは「ログイン」であり、すでにログインしているかどうかを確認します。ログインしている場合はメインページアプリにリダイレクトされ、そうでない場合はログインページが表示されます。
現在、問題はユーザーがログインしたページ領域内にあり、クリックして「ログイン」ページに移動し、すでにログインしているためにメインページにリダイレクトされることです。
そのため、彼は無限ループに陥っています。
ログインページを履歴から削除するにはどうすればよいですか。
Android "Androidが履歴スタックからアクティビティを削除する"のように
ここに解決策があります!
単に使用します:
$ionicHistory.nextViewOptions({
disableBack: true
});
ログイン機能の例:
$scope.login = function () {
Security.login($scope.cred.email, $scope.cred.password)
.success(function(data) {
Security.setUser(data.data[0]);
$ionicHistory.nextViewOptions({
disableBack: true
});
$state.go('posts', {}, {location: "replace", reload: true});
}).error(function(data) {
$scope.showAlert();
});
};
これを達成するための純粋なAngularJSの方法(ionicまたは他の回答のjavascriptではなく)の場合、$ locationサービスのreplace()メソッドを使用してください( documentation ):
通常、角度でリダイレクトを行う場合と同様に、$location.url('/newpath');
または$location.path('/newpath');
を使用します。そしてその直後に$location.replace();
を追加します。または、次のようにコマンドを連鎖できます。
$location.url('/newpath').replace();
クイック検索: https://stackoverflow.com/a/8969975/185672
トップアンサー:
_window.location = url;
_を使用してリダイレクトする代わりに、
window.location.replace(url);
を試してください。
replace()を使用した後、現在のページはセッション履歴に保存されません。つまり、ユーザーは[戻る]ボタンを使用してそのページに移動することはできません。