Javascript 使用$location.path()比较角度中的URL
您好,我正在尝试使用登录服务为angular.js中的单页应用程序打开某些部分(即“call.html”不执行身份验证) 我想知道如何获取path(),以便在页面不是“call.html”时比较它并重定向到“login”页面 我在app.js中获得了以下代码,该代码似乎可以工作,但在Chrome中不起作用,我得到了以下错误: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
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");
}