【发布时间】:2021-08-30 12:55:26
【问题描述】:
我正在尝试使用 Bootstrap 和一些 JSON 数据创建一个多级下拉菜单。
理想情况下,我希望下拉菜单具有这种嵌套功能:
我正在处理一个包含嵌套数据的对象数组,它看起来像:
[
{
ID: 1,
Title: "Middle Earth",
Locations: [
{
Category: "Lothlorien",
Child: [
{
PersonTitle: "Galadriel",
Link: "https://www.galadriel.lot"
},
{
PersonTitle: "Celeborn",
Link: "https://www.celeb.lot"
}
]
},
{
Category: "Mordor",
Child: [
{
PersonTitle: "Saruman",
Link: "https://www.srmn.org"
}
]
}
]
},
{
ID: 2,
Title: "Arrakis",
Locations: [...]
}
]
问题:
- 我可以使用模板文字创建子菜单功能,并从那里执行映射吗? (见下面的代码)
- 或者我必须为下拉菜单的每一层创建单独的
$.each或forEach块吗?例如,“为每个区域(中土、Arrakis 等)创建 1 层下拉菜单。然后为该区域内的每个位置创建一个子菜单。然后为该位置内的每个 PersonTitle 创建...”等
我以前使用过对象数组,但没有达到这种复杂程度,也没有使用数据创建子菜单下拉菜单。
这是一个代码示例:
console.log("regions", regionsData);
if (regionsData.length > 0) {
$.each(regionsData, (index, item) => {
const csContainer = $(".mo_cs-dropdown");
const dropdownGroup = `
<div class="submenu-item">
<a class="dropdown-item dropdown-toggle dropright" data-region="${item.Title}" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">${item.Title}</a>
<div class="dropdown-menu">
<li class="dropdown dropend">
<ul class="dropdown-menu aria-labelledby="dropdownMenuLink">
<li class="dropdown dropend">
${Object.keys(
item.Locations.map(key => {
return `<a class='dropdown-item dropdown-toggle dropright' href='#' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>${item.Locations.Child}</a>`;
})
)}
<ul class="dropdown menu" aria-labelledby="">
<li><a class="dropdown-item" href="#">test item</a></li>
</ul>
</li>
</ul>
</li>
</div>
</div>`;
csContainer.append(dropdownGroup);
});
} else {
...
}
这是console.log(regionsData) 的屏幕截图,带有编辑信息:https://i.stack.imgur.com/HQEXo.png
【问题讨论】:
-
您好,您使用的是哪个引导程序版本?
-
@Swati 版本 4
标签: javascript jquery twitter-bootstrap rest object