Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用$location.path()比较角度中的URL_Javascript_Angularjs - Fatal编程技术网

Javascript 使用$location.path()比较角度中的URL

Javascript 使用$location.path()比较角度中的URL,javascript,angularjs,Javascript,Angularjs,您好,我正在尝试使用登录服务为angular.js中的单页应用程序打开某些部分(即“call.html”不执行身份验证) 我想知道如何获取path(),以便在页面不是“call.html”时比较它并重定向到“login”页面 我在app.js中获得了以下代码,该代码似乎可以工作,但在Chrome中不起作用,我得到了以下错误: TypeError: $location.path(...).contains is not a function 我的app.js app.run(['$rootSco

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

我想知道如何获取path(),以便在页面不是“call.html”时比较它并重定向到“login”页面

我在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');
                }
            }
        });
    }
]);

任何关于如何解决这个问题的帮助都将不胜感激。

默认情况下,
$locationProvider
使用hashbang(从您的路径
/app/#/call/1234
可以明显看出),因此如果您没有将
html5Mode
设置为
true
,那么如果您试图获取URL路径,将得到一个空字符串


尝试设置
$locationProvider.html5Mode(true)
,您应该能够获得URL路径。

包含的是一个jquery方法,而不是angularjs。因此,使用这行代码:

if($location.path().contains('call')){
威尔显然会抛出一个错误,“contains不是函数”

您可以使用:

你可以做:-

var url = $location.url();
if(url.indexOf('call') > -1){
   console.log("Call present");
}

我建议使用ngRoute或ui路由器
var url = $location.url();
if(url.indexOf('call') > -1){
   console.log("Call present");
}