Ma question porte sur la manière de traiter les imbrications complexes de modèles (également appelé partiels ) dans une application AngularJS.
La meilleure façon de décrire ma situation est d'utiliser une image que j'ai créée :
Comme vous pouvez le constater, il s'agit d'une application potentiellement assez complexe, avec de nombreux modèles imbriqués.
L'application est une page unique, elle charge donc un fichier index.html qui contient un élément div dans le DOM avec l'attribut ng-view
attribut.
Pour le cercle 1 Vous voyez qu'il y a une navigation primaire qui charge les modèles appropriés dans le fichier ng-view
. Je le fais en passant $routeParams
au module principal de l'application. Voici un exemple de ce que contient mon application :
angular.module('myApp', []).
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when("/job/:jobId/zones/:zoneId", { controller: JobDetailController, templateUrl: 'assets/job_list_app/templates/zone_edit.html' }).
when("/job/:jobId/initial_inspection", { controller: JobDetailController, templateUrl: 'assets/job_list_app/templates/initial_inspection.html' }).
when("/job/:jobId/zones/:zoneId/rooms/:roomId", { controller: JobDetailController, templateUrl: 'assets/job_list_app/templates/room_edit.html' })
}]);
Dans le cercle 2 le modèle qui est chargé dans le ng-view
dispose d'un sous-navigation . Cette sous-navigation doit ensuite charger des modèles dans la zone située en dessous d'elle - mais comme ng-view est déjà utilisé, je ne sais pas trop comment m'y prendre.
Je sais que je peux inclure des modèles supplémentaires dans le premier modèle, mais ces modèles seront tous assez complexes. J'aimerais garder tous les modèles séparés afin de rendre l'application plus facile à mettre à jour et de ne pas dépendre du modèle parent qui doit être chargé pour accéder à ses enfants.
Dans le cercle 3 Vous pouvez voir que les choses deviennent encore plus complexes. Il est possible que les modèles de sous-navigation aient une valeur de 2ème sous-navigation qui devra également charger ses propres modèles dans la zone située à l'adresse cercle 4
Comment structurer une application AngularJS pour gérer une telle imbrication complexe de modèles tout en les gardant séparés les uns des autres ?