Angularjs 为什么在承诺内设置$window.location.href时设置不起作用?

Angularjs 为什么在承诺内设置$window.location.href时设置不起作用?,angularjs,angular-routing,Angularjs,Angular Routing,我向服务器发送请求,并希望在收到响应后有条件地重定向到另一个页面(不是角度)。因此,导航发生在内部,然后成为承诺的一部分 我试过: $location.path(url) 及 什么都不管用 但是如果我用setTimeout(导航,0)包装这两个调用中的任何一个,就会发生重定向。 看起来像是在消化周期中 任何人都可以澄清或共享解释实际发生的事情的链接。完成更改后,在结束承诺处理程序之前,尝试执行以下操作: $scope.$$phase || $scope.$apply(); 这将填充更改。可能

我向服务器发送请求,并希望在收到响应后有条件地重定向到另一个页面(不是角度)。因此,导航发生在
内部,然后
成为承诺的一部分

我试过:

$location.path(url)

什么都不管用

但是如果我用
setTimeout(导航,0)包装这两个调用中的任何一个,就会发生重定向。
看起来像是在消化周期中


任何人都可以澄清或共享解释实际发生的事情的链接。

完成更改后,在结束承诺处理程序之前,尝试执行以下操作:

$scope.$$phase || $scope.$apply();

这将填充更改。

可能是一些与角度摘要相关的内容。这应该可以很好地工作,我想:
window.location.href=url
@dfsq是的,这可以工作=)但就像“使用原力,卢克”=)我在文档中找到一条注释,提到了对
$location
的更改如何在摘要周期内排队。此外,我可以看到在某些角度事件发生之前,如何等待将URL与浏览器同步。然而,我还没有完全弄明白这一切是如何结合在一起的。我希望这些资源能帮助其他人…@Benjm setTimeout只在$window.locatin.href@location.path()重定向到angulars根页面(/)Hm的情况下工作。您是否使用
$http
$resource
进行服务器通信?嗯,它是在摘要周期内执行的。在多次重新启动并按CTrl+F5组合键后,只需对$window.location.href进行简单更新即可。不明白为什么。
$scope.$$phase || $scope.$apply();