我有一个AngularJS应用程序从index.html开始并使用ui-router。基于触发器我想重新加载整个页面。我试过了:
$state.go($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
但这不起作用。它没有重新加载我的初始index.html。
我能做到:
window.location.href = "index.html";
但是我在我的初始页面上,而不是当前状态。
是否应将window.location.href
设置为index.html
并使用查询字符串参数指定当前位置?如果我这样做,我该如何导航到这个位置?
答案 0 :(得分:21)
目前的诀窍是:
$ state.go($ state.current.name,$ state.params,{reload:true});
答案 1 :(得分:16)
每个人似乎都忽略了Serge van den Oever实际上会问的问题,那就是他希望整个页面重新加载,而不仅仅是路线。
如果将$window
服务注入控制器,那么解决方案非常简单:
$window.location.reload();
如果你只是想要重新加载路由(这似乎更常见),并且正在使用ui-router
,那么只需注入$state
服务并执行:
$state.reload();
这应该重新初始化控制器,因为我已经修复了错误,尽管我认为它不会重新初始化resolve
。
答案 2 :(得分:1)
这在类似的情况下对我有用。
$state.go('root.state').then(function(){
$state.reload();
});
答案 3 :(得分:0)
如果您在控制器中包含$ route服务,则可以尝试$route.reload();
答案 4 :(得分:-1)
试试这个:
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});