AngularUI路由器在解析中未重定向
AngularUI Router not redirecting in resolve
有人能向我解释为什么在下面的代码中,$state.goAND$location.path()都不起作用吗?
状态
.state('sheet', {
url: "/",
templateUrl: "views/sheet.html",
controller: 'SheetCtrl',
resolve:
{
loginRequired:
function(RequireLoginService) {
return RequireLoginService.loginRequired();
}
}
})
需要登录服务
.service('RequireLoginService', function (event, $state, $q, UserService) {
return {
loginRequired: function () {
var deferred = $q.defer();
if (!UserService.isLogged) {
event.preventDefault();
$state.go('login'); // or $location.path('/login');
deferred.reject();
} else {
deferred.resolve()
}
return deferred.promise;
}
}
});
您需要使用$timeout通知angularjs更改,而不会导致"$digest already in progress"。
.service('RequireLoginService', function (event, $state, $timeout, $q, UserService) {
return {
loginRequired: function () {
var deferred = $q.defer();
if (!UserService.isLogged) {
event.preventDefault();
$timeout(function(){
$state.go('login'); // or $location.path('/login');
});
deferred.reject();
} else {
deferred.resolve()
}
return deferred.promise;
}
}
});
我很高兴它解决了这个问题。
相关文章:
- 使用AngularJS中的UI路由器将状态重定向到默认子状态
- 当需要身份验证时,ui路由器不会重定向
- Backbone.js路由器和Internet Explorer重定向问题
- Ember.js:如果控制器中满足某些条件,则在路由器中重定向
- UI 路由器参数 URL 不起作用,只是重定向到 /
- 用户使用铁路由器登录后如何重定向
- JavaScript |角度 |UI 路由器:$urlRouterProvider使用参数重定向
- AngularUI路由器在解析中未重定向
- 如何使用react路由器在重定向时传递参数
- UI 路由器 $state.go 未重定向
- UI 路由器不断重定向到索引,并且不加载状态/视图
- 如何重定向状态子 UI 路由器
- 单击后响应重定向到路由器 URL 并显示默认页面
- Angular ui路由器-重定向不'根本不起作用
- React路由器:获取一个登录成功的url,并传递一个令牌,然后重定向到主页
- 路由器:从canActivate方法返回的承诺中进行重定向
- React路由器在服务器上没有重定向
- React路由器需要auth而不是重定向
- 如何在其他函数中重定向到骨干路由器
- Angular ui -路由器设置网站入口点.重定向到主页URL