【发布时间】:2016-10-10 02:10:17
【问题描述】:
我有 2 个视图共享同一个控制器。在每个视图中,我使用 resolve 在显示之前检索某个日期。然后我将它注入我的控制器(所以我为每个视图注入两个依赖项)。
但问题是当我从一个视图转到另一个视图时,控制台会显示错误,因为它看不到来自另一个视图的依赖关系。这是我的路由配置
.state('ambassade', {
url: '/mot_ambassadeur',
views: {
"@": {
templateUrl: "pages/GestionAmbassade/mot_ambassadeur.html",
controller: "GestionAmbassadeController",
resolve: {
informationsAmbassade: function(GestionAmbassadeService) {
return GestionAmbassadeService.getMotAmbassadeurService();
}
}
}
}
})
.state('personnel', {
url: '/personnel',
views: {
"@": {
templateUrl: "pages/GestionAmbassade/personnel.html",
controller: "GestionAmbassadeController",
resolve: {
personnelAmbassade: function(GestionAmbassadeService) {
return GestionAmbassadeService.getPersonnelService();
}
}
}
}
})
这是我的控制器,2次注射是信息大使和人员大使:
.controller('GestionAmbassadeController', function ($rootScope, $scope, $injector, $sce,
informationsAmbassade,
personnelAmbassade) {
$scope.getMotAmbassadeur = function () {
if (localStorage.getItem("lang") == "fr") {
$scope.motAmbassadeur = $sce.trustAsHtml(informationsAmbassade.contents[0].translation.fr_fr.contenu);
$scope.load = true;
}
$scope.photoAmbassadeur = informationsAmbassade.contents[0].content.path;
};
$scope.getPersonnel = function () {
$scope.Personnels = [];
if (localStorage.getItem("lang") == "fr") {
for (var i = 0; i < personnelAmbassade.contents.length; i++) {
//if ( angular.isDefined(res.contents[i].type) && res.contents[i].type.nom == 'personnel' )
$scope.Personnels.push({
nom: $sce.trustAsHtml(personnelAmbassade.contents[i].translation.fr_fr.contenu),
poste: $sce.trustAsHtml(personnelAmbassade.contents[i].translation.fr_fr.titre)
});
}
$scope.load = true;
}
};
所以当我去大使路线时,它看不到personnalAmbassade 注入,反之亦然。我知道我可以为每个状态使用两个解析,但这是我出于性能目的而避免的。有人可以帮我弄清楚这个“问题”。
【问题讨论】:
标签: javascript angularjs angular-ui-router resolve