angularjs – ui-router在状态更改之前呈现模板
我有一个这样的嵌套状态结构:
$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: 这种解决方案又导致了其他问题.然后第一次点击重新加载应用程序……所以这不是最好的修复… 解决方法
“解决方案”是使用ng-click和$state.go()而不是链接.
这似乎是ui-router中的一个错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |