javascript - Angular JS 应用程序中的后退按钮行为

标签 javascript angularjs single-page-application

我对用 angularJS 编写的 SPA 应用程序有疑问。该应用程序由三个 View 组成 - 登录 View 、主视图和注销 View 。

  • myapp/#/登录
  • myapp/#/main
  • 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) 用户被重定向到注销 View 进行确认 5) 用户被重定向到登录 View

如果我在第 5 步后按下后退浏览器按钮,我将被重定向到主视图。当我处于登录 View 时,有没有办法更改后退按钮的行为?我相信这很简单,如果问题重复,我深表歉意。感谢您的宝贵时间和回复!

最佳答案

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

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

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

      });
});

关于javascript - Angular JS 应用程序中的后退按钮行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30376568/

相关文章:

laravel - Laravel、barryvdh/laravel-cors 和 axios 对 404 响应的跨源请求阻止错误

javascript - 如何检测浏览器后退按钮事件 - 跨浏览器

javascript - 如何通过传递参数从列表数组中检索特定数据作为字符串?

Javascript 继承调用父级的非默认构造函数

javascript - slider 中的 Angular JS 过滤器

html - 如何在使用客户端路由的同时在页面内实现链接?

javascript - 在 JavaScript 中制作原型(prototype)

javascript - 为什么 href 在本地站点上不起作用?

javascript - Angular 裁剪图像文件大小变大

javascript - 出现 AngularJS Ui-grid 错误