我有一个这样的嵌套状态结构:
$stateProvider .state('main',{ url: '',abstract: true,templateUrl: ... controller: mainController,resolve: { Resolve1: ... Resolve2: ... } }) .state('main.state1',{ url: '^/state1/:id/',templateUrl: .... controller: state1Controller,resolve: { Resolve11: ... Resolve22: ... },}) .state('main.state2',{ ....
从我所看到的情况来看,当你处于main.state1状态并且导航到具有另一个id参数的相同状态时,main.state1的模板被渲染得很好但是main(父)的模板在状态改变之前被渲染(我想它不会等待main.state1的数据解析).这导致视图使用错误的数据呈现(更具体地说,我用于生成链接的状态参数是错误的).
我的mainController有$stateParams和$state注入它,这就是我从中获取数据的地方.
有没有人注意到这一点?这是设计还是错误?
有没有办法用最新数据更新父视图?
但是,我希望ui-router能够等待所有数据分辨率,直到它开始渲染视图(甚至是父视图).我不知道我在这里遗漏了什么,但这是我对这个问题的理解到目前为止……
更新:
我现在看到视图渲染(带插值)中涉及的函数被多次调用,首先使用旧值,然后使用新值.但是我在屏幕上看到的最终结果是使用了我第一次进入’main.*’状态时使用的初始数据.这太奇怪了.
更新2:
我发现我的链接只在使用ui-sref时才更新(注意我在状态href中使用了参数,例如ui-sref =“main.state1({id:{{getId()}}})” ).当切换到ng-href时,一切都按预期工作.
我不明白为什么,但这解决了问题.
奇怪的是,ui-sref被评估,但链接没有更新.
去搞清楚…
更新3:
这种解决方案又导致了其他问题.然后第一次点击重新加载应用程序……所以这不是最好的修复…