角度js应用程序中的后退按钮行为

时间:2015-05-21 14:22:40

标签: javascript angularjs single-page-application

我在使用angularJS编写的SPA应用程序时遇到问题。该应用程序由thre视图组成 - 登录视图,主视图和注销视图。

  • 的myapp /#/登录
  • 的myapp /#/主
  • 的myapp /#/注销

我的路线提供者:

function Router($routeProvider) {
    $routeProvider
        .when('/login', {
            templateUrl: 'app/components/login/login.tmpl.html',
            controller: 'login.ctrl',
            controllerAs: 'vm'
        })
        .when('/main', {
            templateUrl: 'app/components/dashboard/main.tmpl.html',
            controller: 'dashboard.ctrl',
            controllerAs: 'vm'
        })
        .when('/logout', {
            templateUrl: 'app/components/logout/logout.tmpl.html',
            controller: 'logout.ctrl',
            controllerAs: 'vm'
        })
        .otherwise({
            redirectTo: '/login'
        });
}

用例:    1)用户登录    2)用户在主视图中看到内容    3)用户注销。    4)用户被重定向到注销视图以进行确认    5)用户被重定向到登录视图

如果在步骤5之后按下后退浏览器按钮,我将被重定向到主视图。当我在登录视图中时,有没有办法改变后退按钮的行为?我相信这很简单,如果问题重复我会道歉。感谢您的时间和回复!

1 个答案:

答案 0 :(得分:1)

请参阅工作示例:http://plnkr.co/edit/46O0znC5HFDE4cYXSm5h?p=preview

登录功能中的cookie存储数据如下,

$cookies.userinfo = {
    'id': 1,
    'name': 'pqr'
};

在注销时删除该数据 -

delete $cookies.userinfo;

然后检查' angular.isDefined($ cookies.userinfo)' (userinfo是在存储数据时给出的cookie名称)如果找到然后将其重定向到您想要在登录后看到的页面。即

app.run(function ($cookies) {
      $rootScope.$on("$routeChangeStart", function () {
        if (angular.isDefined($cookies.userinfo)) {
            $location.path("/pathname");
        }

      });
});