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

angularjs – ui-router在解析父状态之前触发子状态

发布时间:2020-12-17 09:57:05 所属栏目:安全 来源:网络整理
导读:我试图在Angular ui-router的父状态中执行一些初始化代码.初始化代码是orderService.getStoreInfo(),它返回一个promise.只有当这个承诺得到解决时,我才能触发子状态.但是,我注意到,即使在父母的承诺解决之前,孩子的状态也会被触发.我究竟做错了什么?这是’
我试图在Angular ui-router的父状态中执行一些初始化代码.初始化代码是orderService.getStoreInfo(),它返回一个promise.只有当这个承诺得到解决时,我才能触发子状态.但是,我注意到,即使在父母的承诺解决之前,孩子的状态也会被触发.我究竟做错了什么?这是’我的代码:
function configure($stateProvider,$urlRouterProvider) {

    $urlRouterProvider.otherwise('/');

    $stateProvider
        .state('home',{
            abstract: true,template: '<ui-view/>',resolve: {
                storeInfo: /* @ngInject */ function(orderService) {
                    console.log('home: resolve - orderService.getStoreInfo()');
                    return orderService.getStoreInfo();
                }
            }
        })

        .state('home.orders',{
            url: '^/',template: '<my-order-list data-orders="vm.orders"></my-order-list>',resolve: {
                orders: /* @ngInject */ function (orderService) {
                    console.log('home.orders: resolve - orderService.getOrders()');
                    return orderService.getOrders();
                }
            },controller: ['orders',function (orders) {
                this.orders = orders;
            }],controllerAs: 'vm',});
}

控制台日志如下:

home: resolve - orderService.getStoreInfo()
home.orders: resolve - orderService.getOrders()
... messages from orderService.getStoreInfo() ...

这清楚地表明,即使在父州解决之前,子州仍在解雇.

答案是 here:如果你想在实例化子项之前等待解析promises,必须将解析键注入子状态.因此,只需将storeInfo显式注入子状态的解析函数即可.

(编辑:李大同)

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

    推荐文章
      热点阅读