【问题标题】:How to reload state using angular-ui-router?如何使用 angular-ui-router 重新加载状态?
【发布时间】:2017-09-19 10:50:36
【问题描述】:

如何使用 angular-ui-router 重新加载控制器和整个端?

$state.reload() or $state.go('myState')

不起作用。唯一有效的方法是:

$state.go('anotherState');
$state.go('myState');
  • 前往另一个州并返回。然后,正确地重新加载视图。没有这个 hack 怎么办?

问候

【问题讨论】:

  • 是否刷新页面?
  • 它是 SPA 应用程序,所以它不应该。它应该只像我说的那样重新加载控制器
  • 当你说'不起作用'时,你怎么知道它不会重新加载?如果您将 $onInit() 放入该州的控制器并在那里登录控制台,它会给您消息吗?如果是这样,它正在“工作”。
  • @rrd 我有预加载器,它在第一次加载页面时运行,我看到范围内的内容以及控制器是否重新加载
  • 您能否发布您的状态以便我们看到它们,可能是它们中的错误 $state.reload() 不起作用。

标签: javascript angularjs angular-ui-router


【解决方案1】:

您可以在不刷新页面的情况下使用它。这将重新加载视图:

$state.transitionTo($state.current, $stateParams, {
    reload: true,
    inherit: false,
    notify: true
});

或者试试这个

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

【讨论】:

  • 那么你需要用你正在使用的ui路由器版本发布你的HTML和路由文件
  • 我已经更新了答案。请检查并尝试一下
【解决方案2】:

我发现这是使用 ui-router 刷新的最短工作方式:

$state.go($state.current, {}, {reload: true}); //second param is for $stateParams if you have any.

新版本也支持这个:

$state.reload();  

这是一个别名:

$state.transitionTo($state.current, $stateParams, { 
  reload: true, inherit: false, notify: true
});       // this is also used to reload the controller and view without page reload.

文档:https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#methods_reload

【讨论】:

    猜你喜欢
    • 2016-02-08
    • 2016-12-10
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多