从历史记录中删除页面,因此“返回”将正常工作

时间:2014-10-18 15:59:19

标签: angularjs ionic-framework angular-ui-router back

我有我的应用程序,您需要登录才能进入其他页面。

所以第一页是"登录"并检查您是否已经登录,如果是,您将被重定向到主页应用程序,否则它将显示登录页面。

现在的问题是,当用户在记录的页面区域内时,他点击回来,他将进入"登录"页面,然后重定向回主页,因为他已登录。

所以他陷入无限循环。

如何从历史记录中删除登录页面。

就像在android" android中删除历史堆栈中的活动"

3 个答案:

答案 0 :(得分:34)

这是解决方案!

只需使用:

  $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();
    });
};

答案 1 :(得分:22)

对于纯粹的AngularJS方法来实现此目的(而不是其他答案中的离子或javascript),请使用$ location服务的replace()方法(documentation):

像往常一样使用$location.url('/newpath');$location.path('/newpath');进行角度重定向。然后在它之后添加$location.replace();。或者您可以链接这样的命令:

$location.url('/newpath').replace();

答案 2 :(得分:3)

快速搜索:https://stackoverflow.com/a/8969975/185672

回答:

而不是使用window.location = url;重定向,

尝试window.location.replace(url);

  

使用replace()后,当前页面将不会保存在会话中   历史记录,意味着用户无法使用“后退”按钮   导航到它。