加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – ui-router在状态更改之前呈现模板

发布时间:2020-12-17 16:57:30 所属栏目:安全 来源:网络整理
导读:我有一个这样的嵌套状态结构: $stateProvider .state('main',{ url: '',abstract: true,templateUrl: ... controller: mainController,resolve: { Resolve1: ... Resolve2: ... } }) .state('main.state1',{ url: '^/state1/:id/',templateUrl: .... contro
我有一个这样的嵌套状态结构:

$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中的一个错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读