gpt4 book ai didi

angularjs - $location.path 在 AngularJS 工厂中不会改变

转载 作者:行者123 更新时间:2023-12-02 23:00:29 26 4
gpt4 key购买 nike

我的工厂看起来像:

'use strict';

angular.module('myApp')
.factory('httpInterceptor',['$q','$location', '$rootScope', function($q, $location, $rootScope){
return {
response: function(response) {

if(response.success === false) {
console.log("Redirecting");
$location.path('/login');
return $q.reject(response);
}

return response || $q.when(response);
}
}
}]);

它会输出日志,但不会更改路径。我该怎么做才能实现这一目标?

最佳答案

documentation for $location说:

Note that the setters don't update window.location immediately. Instead, the $location service is aware of the scope life-cycle and coalesces multiple $location mutations into one "commit" to the window.location object during the scope $digest phase.

因此,如果拒绝 Promise 对 $location 产生影响,那么您可能看不到预期的更改。

要强制在 Angular 生命周期之外进行更改,您可以使用 window.location 设置哈希,然后强制重新加载页面。当然,这将停止执行后续的任何代码并删除 session ,但如果用户未登录,这可能就是您想要的。

关于angularjs - $location.path 在 AngularJS 工厂中不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19499323/

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