我有一种情况,在一个州内,我有多个视图,每个视图都必须从服务器端获取数据,所以我想在每个视图中使用'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'的依赖
答案 0 :(得分:0)
所以,以下是发布的两个问题的答案:
Q1。在多个视图中使用'resolve'是否正确?就像我一样 已经从官方文档中读到了
resolve关键字必须相对于状态而不是视图(如果你是 使用多个视图)。
事实证明,嵌套视图中的'resolve'就像它相对于state一样工作。因此,嵌套视图的模板仅在解析依赖关系后才会呈现。
Q2。如果解析视图中的依赖项是正常的,那么我该怎么做 在另一个视图中插入一个已解析的依赖项?
在ui-router中,解析依赖关系不能作为兄弟视图的依赖关系提供。我们需要在视图之间建立子父关系,以将一个已解析的依赖关系注入另一个视图。
我希望这也有助于其他人:)