在ui-router中,如何重新解析最本地的状态?

时间:2015-04-15 01:59:34

标签: angularjs angular-ui-router

我有以下状态树,使用ui-router,

1 login
2 root (abstract, resolves app-prefs, user-prefs)
    2.1 home (builds a refresh button, should refresh whatever is being shown)
        2.1.1 dashboard (resolves dashboard-prefs)
        2.1.2 search (resolves search-prefs)
        2.1.3 etc
    2.2 etc

home用户在XYZ状态下按下刷新按钮时,我希望重新输入XYZ,以便重新解析自己的XYZ-prefs $state.go("dashboard", dashboardParams, {please-resolve-only-dashboard}) 1}}但不是层次结构中的上述内容。像

这样的东西
home

当我尝试时,从$state.go("dashboard", dashboardParams, {reload:true})

root

dashboard-prefs向下导致所有以重新解决,这是有问题的,也是昂贵的,因为我只需要重新解析{{1}}。我可以在一些解析器中设置一个更精细的方案,以免重新解决自己,但这可能会成为一项任务,我害怕。是否有另一种更惯用的方式?

由于

1 个答案:

答案 0 :(得分:1)

a wokring plunker

有一种原生方式如何做到这一点 - 只需更改要重新加载的状态的参数即可。

要重现上述状态定义,请使用如下定义的仪表板:

.state('dashboard', { 
  parnet: 'home',
  url: "^/dashboard",
  params: { updater : 1, },
  ...
})

我们可以看到,我们根本没有触及 url 。只需 /dashboard

,它就不会有任何变化

但我们介绍了最新版本的非常酷的功能 - params: {} 。它在我们的例子中定义了一些参数 - updater。每当发送此参数并且其当前值不同时,此子状态(并且仅此子状态)重新初始化

在此处查看有关州params: {}的更多信息:http://angular-ui.github.io/ui-router/site/#/api/ui.router.state。$ stateProvider

现在,我们可以创建此重新加载链接:

<a ui-sref="dashboard({updater : ($stateParams.updater + 1) })">reload</a>

通过这种增量,我们可以确定,重新加载将重新加载此状态

检查here