Angularjs ui路由器在状态更改之前呈现模板

Angularjs ui路由器在状态更改之前呈现模板,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有一个嵌套的状态结构,如下所示: $stateProvider .state('main', { url: '', abstract: true, templateUrl: ... controller: mainController, resolve: { Resolve1: ... Resol

我有一个嵌套的状态结构,如下所示:

$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', {
        ....
从我看到的情况来看,当您处于state
main.state1
并且使用另一个
id
参数导航到相同的状态时,
main.state1
的模板呈现良好,但是
main
的模板(父级)在状态更改之前呈现(我猜它不会等待
main.state1
)的数据解析。这会导致视图使用错误的数据呈现(更具体地说,我用于生成链接的状态参数是错误的)

我的
mainController
$stateParams
$state
注入它,这就是我获取数据的地方

以前有人注意到吗?这是设计的还是一个bug

有没有办法用最新数据更新父视图

但是,我希望ui路由器等待所有数据解析,直到它开始呈现视图(甚至父视图)。我不知道我是否遗漏了一些内容,但这是我到目前为止对问题的理解

更新:

现在我看到视图渲染(带插值)中涉及的函数被多次调用,先是使用旧值,然后是新值。但我在屏幕上看到的最终结果是使用我第一次进入“main.*”状态时使用的初始数据。这太奇怪了

更新2:

我发现我的链接只有在使用ui-sref时才更新(请注意,我使用的是状态href中的参数,例如ui-sref=“main.state1({id:{{getId()}}}}])。当切换到ng-href时,一切正常

我不知道为什么,但这解决了问题

奇怪的是,对ui sref进行了评估,但没有更新链接

想想看

更新3:

此解决方案反过来会导致其他问题。然后,第一次单击会重新加载应用程序…因此,这不是最佳解决方案…

ui路由器转换“通过”父状态到子状态。这意味着将触发main,然后是main.state1。我自己也遇到过这种情况,在那里我得到了重复的侦听器和HTML DOM元素-main实际上与main.state1同时运行。这种行为是通过设计实现的,您唯一的选择就是围绕它进行设计。

解决方案was将使用
ng单击
$state.go()
,而不是链接

这似乎是ui路由器中的一个错误