【问题标题】:Angularjs how to get URL referrer?Angularjs如何获取URL引用?
【发布时间】:2017-03-23 02:03:37
【问题描述】:

在 AngularJS 中,我有一个登录控制器,如果用户到达该页面但未登录,应用程序中的每个页面都会重定向到该控制器。在登录序列之后,我想将用户重定向回他们来自的页面。最好的方法是什么?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    您可以使用 history.back() 让用户导航到他之前所在的页面。这在任何情况下都有效,除非用户直接导航到登录页面:)

    另一种解决方案是在您从另一个页面导航时将搜索参数传递给登录页面。然后,您可以从登录页面选择导航到搜索参数的页面(如果存在),否则导航到“主页”。

    【讨论】:

    • 感谢您的回复! history.back()不适合在我的项目上使用,我的项目是多菜单导航,每个菜单打开一个iframe页面,如果页面被其他菜单操作,history.back(path)返回不对.so我需要获取referer。除了传参的方法,angularjs没有提供获取referer的方法吗?对不起!我的英语不是很流利。
    • 不,你不能在AngularJS中获取上一页或引用者,只有当你自己通过搜索参数传递引用者或通过任何其他方法保存前一页时。例如,您可以订阅 $routeChangeSuccess 事件并保存上一页。
    • 如果这里的答案是您要使用的正确答案,请将其标记为您问题的答案。
    【解决方案2】:

    也许你可以捕捉到路由的变化,当目标是你的登录页面时,它可以保存旧的路由。登录后,您可以重定向到旧路线

    angular.module('appName')
      .run(['$rootScope','$location', '$routeParams', function($rootScope, $location, $routeParams) {
        $rootScope.$on('$routeChangeSuccess', function(e, next, cur) {
           if (next.path() == 'your/login/path') {
              $rootScope.savedRoute = $location.path());
              $rootScope.savedParams = $routeParams;
           }
        }
      }]);
    

    我不确定 path() 是否是正确的函数,但我想你可以明白我的意思

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 2016-12-19
      • 1970-01-01
      • 2017-05-03
      相关资源
      最近更新 更多