Mi pregunta implica cómo tratar con el anidamiento complejo de plantillas (también llamadas parciales ) en una aplicación AngularJS.
La mejor manera de describir mi situación es con una imagen que creé:
Como puede ver, esto tiene el potencial de ser una aplicación bastante compleja con muchos modelos anidados.
La aplicación es de una sola página, por lo que carga un index.html que contiene un elemento div en el DOM con el ng-view
atributo.
Para el círculo 1 , verá que hay una navegación principal que carga las plantillas apropiadas en el ng-view
. Estoy haciendo esto pasando $routeParams
al módulo principal de la aplicación. Aquí hay un ejemplo de lo que hay en mi aplicación:
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' })
}]);
En el círculo 2 , la plantilla que se carga en el ng-view
tiene una subnavegación adicional . Este subnavegador necesita cargar plantillas en el área debajo de él, pero dado que ng-view ya se está utilizando, no estoy seguro de cómo hacerlo.
Sé que puedo incluir plantillas adicionales dentro de la primera plantilla, pero todas estas plantillas serán bastante complejas. Me gustaría mantener todas las plantillas separadas para que la aplicación sea más fácil de actualizar y no depender de la plantilla principal que debe cargarse para acceder a sus elementos secundarios.
En el círculo 3 , puedes ver que las cosas se vuelven aún más complejas. Existe la posibilidad de que las plantillas de subnavegación tengan una segunda subnavegación que también necesite cargar sus propias plantillas en el área del círculo 4
¿Cómo se puede estructurar una aplicación AngularJS para lidiar con un anidamiento tan complejo de plantillas y mantenerlas separadas entre sí?