我的问题涉及如何在 AngularJS 应用程序中处理复杂的模板嵌套(也称为partials)。
描述我的情况的最好方法是使用我创建的图像:
正如您所看到的,这有可能成为具有大量嵌套模型的相当复杂的应用程序。
该应用程序是单页的,因此它加载一个index.html,其中包含 DOM 中具有ng-view
属性的 div 元素。
对于圆 1,您会看到有一个主导航,可将适当的模板加载到ng-view
. 我通过传递$routeParams
给主应用程序module来做到这一点。这是我的应用程序中内容的示例:
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' })
}]);
在圆圈 2 中,加载到 中的模板ng-view
有一个额外的子导航。然后这个子导航需要将模板加载到它下面的区域 - 但由于 ng-view 已经被使用,我不知道如何去做。
我知道我可以在第一个模板中包含其他模板,但这些模板都将非常复杂。我想将所有模板分开,以便使应用程序更容易更新,并且不必依赖于必须加载的父模板才能访问其子模板。
在圆圈 3 中,您可以看到事情变得更加复杂。子导航模板可能会有第二个子导航,需要将其自己的模板也加载到圆圈 4 中的区域
如何构建一个 AngularJS 应用程序来处理如此复杂的模板嵌套,同时保持它们彼此分离?