AngularJS ui-router:强制重新加载

Ser*_*ver 21 angularjs angular-ui-router

我有一个AngularJS应用程序从index.html开始并使用ui-router.基于触发器我想重新加载整个页面.我试过了:

$state.go($state.current, $stateParams, {
    reload: true,
    inherit: false,
    notify: true
});
Run Code Online (Sandbox Code Playgroud)

但这不起作用.它不会重新加载我的初始index.html.

我可以:

window.location.href = "index.html";
Run Code Online (Sandbox Code Playgroud)

但后来我在我的初始页面,而不是当前状态.

如果一组window.location.hrefindex.html与查询字符串参数指定的当前位置?如果我这样做,我该如何导航到这个位置?

小智 21

目前的诀窍是:

$ state.go($ state.current.name,$ state.params,{reload:true});

  • 如果您的 $state.go 与 $state() 相同,则这不起作用。它被完全忽略并默默地失败。$window.location.reload() 确实可以解决问题。在 1.4x 上测试 (2认同)

Mor*_*red 16

每个人似乎都忽略了Serge van den Oever实际上会问的问题,那就是他希望整重新加载,而不仅仅是路线.

如果将$window服务注入控制器,那么解决方案非常简单:

$window.location.reload();
Run Code Online (Sandbox Code Playgroud)

如果你只是想要重新加载路由(这似乎更常见),并且正在使用ui-router,那么只需注入$state服务并执行:

$state.reload();
Run Code Online (Sandbox Code Playgroud)

这应该重新初始化控制器,因为错误已经修复,虽然我不认为它重新初始化resolves.


hyd*_*gen 0

如果您在控制器中包含 $route 服务,您可以尝试$route.reload();