0

我有这样的代码:

someRequestToServer().then(response => {
  console.log('phase before nav = ' + $rootScope.$$phase);
  $location.path('/somepath');
  console.log('phase post nav = ' + $rootScope.$$phase);
  return response;
});

两条打印行都返回“$digest”,这意味着我处于摘要循环中……但是 $location.path 调用根本不起作用——特别是浏览器 URL 浏览器不会改变。事实上,这是唯一有效的部分。

此外,在调用之后, location.path() 返回正确的 URL,失败的是它能够传播到浏览器并自动路由页面。虽然我可以使用 $route.reload() 强制路由(如评论中所建议的那样),但我仍然无法更改浏览器 URL,这会将页面置于 URL 和页面状态的不良位置不匹配。

我可以通过直接使用 window.location.href 来解决这个问题,但由于各种原因,这不是一个很好的解决方案。

有很多关于 $location.path 不起作用,因为它是在角度范围之外调用的(因此你必须通过应用强制它),但是当它看起来像在消化周期中时有什么想法吗?

4

0 回答 0