Ich habe 2 Ansichten, die den gleichen Controller teilen. In jeder dieser Ansichten habe ich versucht, ein Datum zu finden, bevor es angezeigt wird. Dann spritze ich es in meinen Controller (spritze also zwei Abhängigkeiten für jede Ansicht ein).Mehrere Ansichten, mehrere lösen aber für einen Controller in AngularJS
Aber das Problem ist, wenn ich von einer Ansicht zur anderen gehe, zeigt die Konsole einen Fehler an, weil es die Abhängigkeit von der anderen Ansicht nicht sieht. Dies ist meine Strecke Konfiguration
.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();
}
}
}
}
})
Dies ist mein Controller, sind die 2 Injektionen informationsAmbassade und 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;
}
};
Also, wenn ich gehe zu Ambassade route es nicht die personalAmbassade injectio sehen n und umgekehrt. Ich weiß, dass ich die zwei Auflösungen für jeden Zustand verwenden kann, aber das ist, was ich aus Leistungsgründen vermeide. Kann mir jemand helfen, dieses "Problem" herauszufinden?
Ja, ich habe darüber nachgedacht, aber ist es nicht ein Problem, wenn ich zu viele Seiten habe? Will nicht zu viele Controller ein wenig schwer – lakhassane
Zusätzlich zu Ihrer Antwort, denke ich, wenn wir diese Methode verwenden, sollten wir auch testen, aus welchem Zustand der Benutzer kommt. – lakhassane
Mehr kleine Controller sollten weniger schwer sein, da weniger Dinge auf einmal initialisiert werden. (All das Zeug wird bei Bedarf lazy initialisiert .. oder sollte zumindest sein). Und wenn Sie anfangen zu testen, woher der Benutzer in der Steuerung kommt, sollten Sie sie auf jeden Fall trennen. –