【问题标题】:Why setting $window.location.href does not work when set inside a promise?为什么在承诺中设置 $window.location.href 不起作用?
【发布时间】:2014-10-16 13:58:32
【问题描述】:

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

我试过了:

$location.path(url)

$window.location.href = url;
$windo.location.reload();

没有任何作用。

但是如果我用setTimeout(navigate,0) 包装这两个调用中的任何一个,就会发生重定向。
似乎在摘要周期中 Angular 保护 url。

谁能澄清或分享解释真实情况的链接。

【问题讨论】:

  • 可能是一些与角度摘要相关的东西。我认为这应该可以正常工作:window.location.href = url;.
  • @dfsq 是的,这行得通 =) 但这就像“使用武力,卢克” =)
  • 我在$location 文档中发现了一条评论,其中提到了对$location 的更改如何在摘要周期内排队。此外,我可以看到 $location service source 如何等待将 URL 与浏览器同步,直到发生某些角度事件。然而,我还没有完全理解这一切是如何结合在一起的。我希望这些资源可以帮助其他人......
  • @Benjm setTimeout 仅适用于 $window.locatin.href @location.path() 重定向到 angulars 根页面 (/)
  • 嗯。您是使用$http 还是$resource 与服务器通信?

标签: angularjs angular-routing


【解决方案1】:

在进行更改之后,在结束 Promise 处理程序之前,尝试这样做:

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

这应该会填充更改。

【讨论】:

  • 嗯,它是在一个摘要循环内执行的。在几次重新启动和 CTrl+F5 之后,它才开始使用 $window.location.href 的简单更新。不明白为什么。
猜你喜欢
  • 1970-01-01
  • 2022-11-27
  • 2022-01-15
  • 1970-01-01
  • 2021-11-29
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
相关资源
最近更新 更多