gpt4 book ai didi

javascript - AngularUI 路由器在解析时不重定向

转载 作者:行者123 更新时间:2023-11-30 17:01:22 24 4
gpt4 key购买 nike

谁能向我解释为什么在下面的代码中,$state.go $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;
}
}
});

我很高兴它解决了这个问题。

关于javascript - AngularUI 路由器在解析时不重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28785491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com