当前位置:  开发笔记 > 编程语言 > 正文

使用$ location.path()比较Angular中的URL

如何解决《使用$location.path()比较Angular中的URL》经验,为你挑选了1个好方法。

嗨我正在尝试使用登录服务为angular.js中的单页应用程序打开某些部分(即'call.html'不执行身份验证).

我想知道如何获取路径(http://www.example.com/app/#/call/1234),以便我可以比较它并重定向到"登录"页面,如果该页面不是'call.html '?

我的app.js中有以下代码似乎有效,但在Chrome中不起作用,我收到以下错误:

TypeError: $location.path(...).contains is not a function

app.js.

app.run(['$rootScope', '$location', '$cookieStore', '$http',
    function ($rootScope, $location, $cookieStore, $http)
    {
        $rootScope.globals = $cookieStore.get('globals') || {};
        if ($rootScope.globals.currentUser)
        {
            $http.defaults.headers.common['Authorization'] = 'Basic' + $rootScope.globals.currentUser.authdata; // jshint ignore:line
        }
        $rootScope.$on('$locationChangeStart', function (event, next, current)
        {
            // redirect to login page if not logged in
            if($location.path().contains('call'))
            {
                return;
            }

            else
            {
                if ($location.path() !== '/login'  && !$rootScope.globals.currentUser && $location.path() !=='/')
                {
                    $location.path('/login');
                }
            }
        });
    }
]);

如何解决这个问题的任何帮助将不胜感激.



1> Bhojendra Ra..:

contains是一个不是angularjs的jquery方法.所以,使用这行代码:

if($location.path().contains('call')){

显然会抛出一个错误,"包含不是一个功能".

你可以使用indexOf:

if($location.path().indexOf('call') > -1){

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有