我正在制作一个相当复杂的菜单系统,它应该根据已登录的权限进行更改。现在我的问题是,我是否嵌套了太多?如何在菜单中的管理员中访问项目中的标题?我将使用angularJS' s-repeat生成菜单,因此我需要能够通过menus.admin.items.title"中的"项目来访问它。例如。我想在我添加更多内容之前我应该问一下,如果这不是一个可行的选择。
这是角度控制器内的菜单结构:
$scope.menus = [{
admin: [{
title: 'Administration',
items: [{
title: 'Hantera utbildningar',
URL: 'mngprograms'
},
{
title: 'Hantera kurser',
URL: 'mngcourses'
},
{
title: 'Hantera lärare',
URL: 'mngteachers'
},
{
title: 'Hantera studenter',
URL: 'mngstudents'
}],
URL: 'administration',
id: 'administration'
}]
}]
这是我尝试访问它的失败:
修改:
要更全面地了解整个事情,请访问:http://jsfiddle.net/52evmfg9/
<ul id="main-menu">
<li data-ng-repeat="menu in menus" id="{{menu.id}}"><a href="{{menu.URL}}.php">{{menu.title}}</a>
<ul data-ng-if="menu.admin">
<li data-ng-repeat="subitem in menu[3].admin.items"><a href="{{subitem.URL}}.php">{{subitem.title}}</a></li>
</ul>
</li>
</ul>
我该怎么写?
答案 0 :(得分:0)
回答评论中的问题:
<div data-ng-repeat="(k,v) in menus">
<div data-ng-repeat="(k,w) in v">
<div data-ng-repeat="(k,x) in w">
<ul data-ng-repeat="(k,y) in x" >
{{k}} : {{y}}
<li ng-if="z.title" data-ng-repeat="(k,z) in y track by $index">
Title: {{z.title}} URL: {{z.URL}}
</li>
</ul>
</div>
</div>
</div>
答案 1 :(得分:0)
我建议您的层次结构更明确。对于每个菜单,您可以拥有一个键&#34;子菜单&#34;您可以在其中找到层次结构中更下方的菜单。隐藏元素的有用指令是ng-show。
我只会构建一个完整的菜单树,然后为您的用户或角色设置权限。否则树将变得无法管理,并且会有重复的数据。
以下是jsBin:
的示例