[英]How to generate multilevel menu items programmatically in angularjs?
我正在创建从json以编程方式生成的侧边菜单栏。
我已经编码了两个级别的项目,但是我用html硬编码了两个级别的ulLi项目。 但是我不想对菜单项的级别进行硬编码。
我尝试了以下代码。
HTML
<ul class="sidebar-menu sidebar-nav" ng-repeat="m in modulos">
<li class="treeview" ng-repeat="(itemIndex, item) in modulos">
<a ng-click="showSubmenu(itemIndex)">
<i class="fa fa-table"></i> <span>{{item.module}}</span>
</a>
<ul class="sub-nav" ng-show="isShowing(itemIndex)">
<li ng-repeat="sub_element in m.submodule">
<a href="{{sub_element.url}}">{{sub_element.res}}</a>
</li>
</ul>
</li>
</ul>
JS
$scope.modulos = [{
"module":"Admin System ",
"adm_modulo_id":1,
"submodule": [{
"res":"Angular","url":"#",
"submodule":[{
"res":"Angular",
"url":"#/admin/1"
},{
"res":"Linux",
"url":"#/admin/2"
},{
"res":"Server",
"url":"#/admin/3"
}]
},{
"res":"Linux",
"url":"#/admin/2"
},{
"res":"Server",
"url":"#/admin/3"
}]
}];
在这里,我已经编码了两个级别的项目。 但这是一个变量。 一些项目将具有5个级别,而另一个项目将具有2个级别。
因此,基于子模块,我需要编写一个逻辑。
您可以像其他所有“树”问题一样,通过递归进行此操作。 带有角度的html递归是通过html中的模板完成的,例如:
<script type="text/ng-template" id="list_node.html">
........
<ul>
<li ng-repeat="node in node.children" ng-include="list_node.html"></li>
</ul>
</script>
在上方我的侦听器中点的位置上,您将定义要显示的内容(节点项上的数据)。 示例: <p>{{node.name}}</p>
然后在ng-repeat中仅包含模板。 例:
<ul class="node-indented slide">
<li ng-repeat="node in node.children" ng-include="'list_node.html'"></li>
</ul>
将此示例调整为您的用例,它将起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.