UI-Router:父状态和子状态的顺序解析

srp*_*rph 15 javascript angularjs angular-ui angularjs-routing

我有两个抽象的状态parent,并parent.child和一个可激活的状态parent.child.grand.

我想parent承诺解决之前parent.child.grand得到它做出决议执行.为什么?因为它来自于从决心Ajax请求的特定数据parent在需要parent.grand.child.

这是一个要点

是否可以在不使用控制器的情况下顺序将父级的承诺链接到子状态?

(parent解决开始 - >完成ajax请求 - >解析promise - > parent.child.grand解决启动 - >完成ajax请求 - >解析promise

sq1*_*020 17

我已经看到了一些答案,但如果没有一个例子,它仍然不完全清楚.文档说:

如果要在实例化子项之前等待解析promise,则必须将解析键注入子状态.

这是一个例子:

    $stateProvider.state('parent', {
          resolve:{
             resA:  function(){
                return {'value': 'A'};
             }
          },
          controller: 'parentCtrl'
       })
       .state('parent.child', {
          resolve:{
             // Adding resA as an argument here makes it so that this child state's resB resolve
             // function is not run until the parent state's resA resolve function is completed.
             resB: function(resA){
                return {'value': resA.value + 'B'};
             }
          }
          controller: 'childCtrl'
        })
Run Code Online (Sandbox Code Playgroud)

而且您不必将resA注入子控制器.

  • 有没有办法强迫这种行为?我有很多从子状态继承的子状态,并且希望所有状态都等到root被解析. (2认同)

小智 6

如果添加auth到孙子解析的依赖注入,ui-router将在孙子解析之前解决它.

['authsrv', 'auth', function(authsrv, auth){}]

希望有道理.