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

Tzo*_*Noy 22 back angularjs angular-ui-router ionic-framework

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

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

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

所以他陷入无限循环.

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

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

Tzo*_*Noy 35

这是解决方案!

只需使用:

  $ionicHistory.nextViewOptions({
     disableBack: true
  });
Run Code Online (Sandbox Code Playgroud)

登录功能示例:

$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();
    });
};
Run Code Online (Sandbox Code Playgroud)

  • $ ionicViewService现已被弃用,但您可以使用[$ ionicHistory.nextViewOptions](http://ionicframework.com/docs/nightly/api/service/$ionicHistory/#nextViewOptions)代替. (6认同)
  • 你应该使用historyRoot:true来代替disableBack:在这种情况下是真的:) (4认同)

Reb*_*cca 23

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

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

$location.url('/newpath').replace();
Run Code Online (Sandbox Code Playgroud)