У меня есть следующая структура данных для элементов в моем sidemenu, в приложении Angular, основанном на платной веб-теме. Структура данных является моей, и меню выводится из исходного меню со всеми элементами в ul
с жестким кодированием.
В SidebarController.js
:
$scope.menuItems = [
{
"isNavItem": true,
"href": "#/dashboard.html",
"text": "Dashboard"
},
{
"isNavItem": true,
"href": "javascript:;",
"text": "AngularJS Features",
"subItems": [
{
"href": "#/ui_bootstrap.html",
"text": " UI Bootstrap"
},
...
]
},
{
"isNavItem": true,
"href": "javascript:;",
"text": "jQuery Plugins",
"subItems": [
{
"href": "#/form-tools",
"text": " Form Tools"
},
{
"isNavItem": true,
"href": "javascript:;",
"text": " Datatables",
"subItems": [
{
"href": "#/datatables/managed.html",
"text": " Managed Datatables"
},
...
]
}
]
}
];
Тогда у меня есть следующий частичный вид, связанный с этой моделью следующим образом:
<ul class="page-sidebar-menu" data-keep-expanded="false" data-auto-scroll="true" data-slide-speed="200" ng-class="{'page-sidebar-menu-closed': settings.layout.pageSidebarClosed}">
<li ng-repeat="item in menuItems" ng-class="{'start': item.isStart, 'nav-item': item.isNavItem}">
<a href="{{item.href}}" ng-class="{'nav-link nav-toggle': item.subItems && item.subItems.length > 0}">
<span class="title">{{item.text}}</span>
</a>
<ul ng-if="item.subItems && item.subItems.length > 0" class="sub-menu">
<li ng-repeat="item in item.subItems" ng-class="{'start': item.isStart, 'nav-item': item.isNavItem}">
<a href="{{item.href}}" ng-class="{'nav-link nav-toggle': item.subItems && item.subItems.length > 0}">
<span class="title">{{item.text}}</span>
</a>
</li>
</ul>
</li>
</ul>
ПРИМЕЧАНИЕ В привязках представлений, которые вы не видите в модели, могут быть $scope
свойства, или наоборот, но это потому, что я отредактировал их для краткости.
Теперь, поскольку второй уровень li
также не содержит условный ul
для своего собственного subItems
, подпункты в пункте меню Datatable
не отображаются.
Как я могу создать представление или шаблон или оба, которые будут рекурсивно привязываться к модели, чтобы отображались все подпозиции всех подпозиций? Обычно это может быть до четырех уровней.