Angular UI-Router |多视图:如何在多个视图中使用resolve对象?

时间:2015-08-26 06:51:03

标签: angularjs angular-ui-router

我有一种情况,在一个州内,我有多个视图,每个视图都必须从服务器端获取数据,所以我想在每个视图中使用'resolve',它自己进行REST调用以获取数据来自服务器。

以下是我的尝试:

.state('dashboard.xyz.deal.details', {
        url: "/details/:dealId",
        resolve: {
            permissions : function(dealDetails, $stateParams){
                return dealDetails.getUnitPermissions($stateParams.dealId);
            }
        },
        views: {

            "viewDealDetails": {
                templateProvider: function(permissions, $http){
                    return $http.get('/modules/deal-details-module/partial/views/view-deal-details/view-deal-details.html')
                        .then(function(tpl){
                        return tpl.data;
                    });
                },
                controller: 'ViewDealDetailsCtrl',
                resolve: {
                    resolveDealDetails : function(dealDetails, $stateParams){
                        console.log('Inside the resolve of viewDealDetails');
                        return dealDetails.getDealDetails($stateParams.dealId);
                    }
                }
            },
            "viewFinePrints": {
                templateProvider: function(permissions, $http){
                    return $http.get('/modules/deal-details-module/partial/views/view-fine-prints/view-fine-prints.html')
                        .then(function(tpl){
                            return tpl.data;
                        });
                },
                resolve: {
                    resolveFinePrints: function(dealDetails){
//How can I inject the 'resolveDealDetails' as dependency in 'resolveFinePrints' ?
                        console.log('Inside the resolve of resolveFinePrints ::::::');
                        return dealDetails.getFinePrints('travel').then(function(data){
                            return data;
                        });
                    }
                },
                controller: 'ViewFinePrintsCtrl'
            }
        }
    })

所以,我想问下列问题:

Q1。在多个视图中使用'resolve'是否正确?正如我从官方文档中读到的那样

  

resolve关键字必须相对于状态而不是视图(如果你是   使用多个视图)。

Q2。如果解析视图中的依赖项是正常的,那么如何在另一个视图中插入一个已解析的依赖项?

例如。在我的代码中,我想使用'resolveDealDetails'作为'resolveFinePrints'的依赖

1 个答案:

答案 0 :(得分:0)

所以,以下是发布的两个问题的答案:

  

Q1。在多个视图中使用'resolve'是否正确?就像我一样   已经从官方文档中读到了

     

resolve关键字必须相对于状态而不是视图(如果你是   使用多个视图)。

事实证明,嵌套视图中的'resolve'就像它相对于state一样工作。因此,嵌套视图的模板仅在解析依赖关系后才会呈现。

  

Q2。如果解析视图中的依赖项是正常的,那么我该怎么做   在另一个视图中插入一个已解析的依赖项?

在ui-router中,解析依赖关系不能作为兄弟视图的依赖关系提供。我们需要在视图之间建立子父关系,以将一个已解析的依赖关系注入另一个视图。

我希望这也有助于其他人:)