AngularJS ui-router:强制重新加载

时间:2014-04-24 00:53:12

标签: angularjs angular-ui-router

我有一个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并使用查询字符串参数指定当前位置?如果我这样做,我该如何导航到这个位置?

5 个答案:

答案 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
});