我有2個視圖共享相同的控制器。在這個視圖的每個視圖中,我都使用resolve來顯示它之前檢索某個日期。然後我將其注入到我的控制器中(所以我爲每個視圖注入兩個依賴項)。AngularJS中的多個視圖,多個解析但只有一個控制器
但問題是,當我從一個視圖轉到另一個視圖時,控制檯顯示錯誤,因爲它看不到其他視圖的依賴性。這是我的路由配置
.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次注射是informationsAmbassade和personnelAmbassade:
.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;
}
};
所以,當我去AMBASSADE路線它沒有看到personnalAmbassade注射n,反之亦然。我知道我可以爲每個州使用兩種解決方案,但這是我爲了性能目的而避免的。有人可以幫我弄清楚這個「問題」。
是的,我想過,但是當我頁面太多時,這不是問題嗎?不會太多的控制器有點沉重 – lakhassane
除了你的答案,當使用這種方法時,我認爲我們也應該測試用戶來自哪個狀態。 – lakhassane
更多的小型控制器應該不那麼重,因爲一次只有更少的東西會被初始化。 (所有這些東西都懶惰地初始化時,或者至少應該是)。 而當您開始測試用戶來自控制器的位置時,您應該將其分開。 –