我有以下状态树,使用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}}。我可以在一些解析器中设置一个更精细的方案,以免重新解决自己,但这可能会成为一项任务,我害怕。是否有另一种更惯用的方式?
由于
答案 0 :(得分:1)
有一种原生方式如何做到这一点 - 只需更改要重新加载的状态的参数即可。
要重现上述状态定义,请使用如下定义的仪表板:
.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