如何使用ng-repeat 2级别或或级别制作动态菜单
问题描述:
我有两个对象。如何使用ng-repeat 2级别或或级别制作动态菜单
1. $scope.modules=[ { "ModuleId": 1, "ModuleName": "Membership" },
{ "ModuleId": 2, "ModuleName": "Loan" },
{ "ModuleId": 3, "ModuleName": "News" },
{ "ModuleId": 4, "ModuleName": "Contact Us" },
{ "ModuleId": 5, "ModuleName": "About Us" },
{ "ModuleId": 6, "ModuleName": "FeedBack" },
{ "ModuleId": 7, "ModuleName": "Fee" },
{ "ModuleId": 8, "ModuleName": "Home" } ]
2. $scope.subModules=[ { "ModuleId": 1, "SubModuleId": 1, "SubModuleName": "Get Membership" },
{ "ModuleId": 7, "SubModuleId": 2, "SubModuleName": "Fee Structure" },
{ "ModuleId": 7, "SubModuleId": 3, "SubModuleName": "Fee Submission" },
{ "ModuleId": 1, "SubModuleId": 4, "SubModuleName": "Our Members" },
{ "ModuleId": 7, "SubModuleId": 5, "SubModuleName": "Fee Status" },
{ "ModuleId": 2, "SubModuleId": 6, "SubModuleName": "Loan Structure" },
{ "ModuleId": 2, "SubModuleId": 7, "SubModuleName": "form" },
{ "ModuleId": 1, "SubModuleId": 8, "SubModuleName": "Inquiry" } ]
我想创建,现在,如果菜单有子菜单,有两个级别的动态菜单有下拉菜单。 我想要一个像这样的图像显示输出...
告诉我如何把HTML重复ng。如何从两个对象上面创建所需的json对象。
我知道如何把HTML N以外的东西。只要帮助我ng-repeat和UL和LI。否则我会管理。
答
这样做的最简单的方法是,如果你可以在modules
阵列与subModules
阵列,像这样(只包括模块1为清楚起见)相结合:
$scope.modules = [
{ModuleId: 1, ModuleName: 'Membership', SubModules:
[
{ "ModuleId": 1, "SubModuleId": 1, "SubModuleName": "Get Membership" }
{ "ModuleId": 1, "SubModuleId": 4, "SubModuleName": "Our Members" },
{ "ModuleId": 1, "SubModuleId": 8, "SubModuleName": "Inquiry" }
]
}
];
如果你的模型是这样的,你可以很容易地嵌套NG-重复:
<ul>
<li ng-repeat="module in modules">
{{module.ModuleName}}
<ul>
<li ng-repeat="subModule in module.SubModules">
{{subModule.SubModuleName}}
</li>
</ul>
</li>
</ul>
,如果你因为某些原因不能让你的模块/子模块一样,(对于intstance从你无法控制的服务器加载它们),你可以简单地创建在y中加入这个模型我们的控制器:
angular.forEach($scope.modules, function(module){
module.SubModules = [];
angular.forEach($scope.subModules, function(subModule){
if(subModule.ModuleId === module.ModuleId){
module.SubModules.push(subModule);
}
});
});
这是我长时间卡住的地步。我不知道如何制作一个json,就像你在第一段中展示的那样。如果你能从我的代码中帮助我。 – micronyks 2014-10-12 15:20:34
在你的代码中,它看起来像你的模块/子模块数组是硬编码的。如果是这样的话,您可以简单地按照我的第一个片段中的模式,将子模块放置在模块内的数组中。如果您无法控制JSON的外观,可以使用第三个代码片段中的代码,将子模块注入每个模块对象的“SubModules”字段。 – 2014-10-12 15:27:31
不支持其未硬编码。让我试试你的片段,让我检查一下。 – micronyks 2014-10-12 15:38:45