【发布时间】:2015-12-21 23:44:49
【问题描述】:
当我可以在 AngularJS 中通过页面重新加载来更改 url 时,我找到了一个解决方案:
$window.location = "new_url";
$window.location.reload();
它有一个副作用 - $window.location = "new_url" 立即更改状态/路由,您可以发现加载的新控制器模板,甚至在控制器初始化时发现网络连接,然后才执行 $window.location.reload() 代码重新加载页面。
我尝试了这里描述的几种方法https://stackoverflow.com/a/26853786/551744
$state.go("state name", "state params", { reload: true });
但对我不起作用,它不会重新加载页面。
此代码也不起作用:
$state.go("state name", "state params", { notify: false });
$state.reload();
我用这种方式,这里描述https://stackoverflow.com/a/25649813/551744:
$state.go("state name", "state params", { notify: false });
setTimeout(function() {
$window.location.reload();
}, 500);
行为非常接近需要(更改 url 后状态不会加载新的控制器和模板):$state.go("state name", "state params", { notify: false }); 仅更改 url 和 $window.location.reload(); 具有新 url 的 realods 页面。但是这种方式有副作用:我需要使用setTimeout 来等待 url 何时更改。我不知道为什么,但它不会立即发生。我尝试设置 0 毫秒、50 毫秒、100 毫秒,但有时 url 变化不够快,并且页面 realods 与以前的 url。
我该如何克服:
- “setTimeout code”问题;
- 或检测更改 url 时的事件以强制重新加载页面(它
可能是一个问题,因为代码包含
{ notify: false }); - 或其他解决方案?
【问题讨论】:
标签: angularjs angular-ui-router