AngularUI 路由器在解析时不重定向
AngularUI Router not redirecting in resolve
谁能给我解释一下,为什么在下面的代码中,$state.go AND $location.path() 都不起作用?
状态
.state('sheet', {
url: "/",
templateUrl: "views/sheet.html",
controller: 'SheetCtrl',
resolve:
{
loginRequired:
function(RequireLoginService) {
return RequireLoginService.loginRequired();
}
}
})
RequireLoginService
.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 通知 angulajs 更改,而不会导致“$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;
}
}
});
很高兴它解决了问题。
谁能给我解释一下,为什么在下面的代码中,$state.go AND $location.path() 都不起作用?
状态
.state('sheet', {
url: "/",
templateUrl: "views/sheet.html",
controller: 'SheetCtrl',
resolve:
{
loginRequired:
function(RequireLoginService) {
return RequireLoginService.loginRequired();
}
}
})
RequireLoginService
.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 通知 angulajs 更改,而不会导致“$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;
}
}
});
很高兴它解决了问题。