当用户未经授权时,此代码更改路径,但仅在页面重新加载后查看更新。 $ state.reload()和$ rootScope.apply()没有帮助。
$rootScope.$on('$stateChangeStart', function (event, next) {
if (!$localStorage.authenticate) {
$rootScope.authenticate = false;
if (next.url == '/reset_password/:token') {
console.log('reset password page');
}
else if (next.url == '/forgot_password') {
$location.path(next.url);
}
else {
$location.path('/login');
}
}
else {
$rootScope.authenticate = true;
if ((next.url == '/login') || (next.url == '/forgot') || (next.url == '/reset_password/:token')) {
$location.path('/index');
}
$rootScope.userName = $localStorage.userName;
API.getService('/login').get(function (res) {
if (!res.logged) {
$location.path('/login');
delete $localStorage.userName;
$localStorage.authenticate = false;
}
})
}
});
答案 0 :(得分:0)
在ui路由器中,您不应使用$location
要改变状态,你必须使用它:
$state.go("mystatename", {urlParam:value});
在HTML中不使用href,请改用ui-sref:
ui-sref = "mystatename({urlParam:value})"
希望它能解决你的问题。