我有一个对象,linkItems,它包含一个数组。我不知道如何检查点击的链接是否有子菜单然后运行一些代码,例如不要关闭菜单否则运行关闭菜单? <ul class="main-nav" onclick="{!c.onClick}"> <aura:iteration items="{!v.linkItems}" var="item" indexVar="i"> <aura:if isTrue="{!item.subMenu}"> <li> <a data-menu-item-id="{!item.id}" href="JavaScript:Void(0);">{!item.label}</a> <ul> <aura:iteration items="{!item.subMenu}" var="subItem" indexVar="id"> <li><a data-menu-item-id="{!subItem.id}" href="#">{!subItem.label}</a></li> </aura:iteration> </ul> </li> <aura:set attribute="else"> <li><a data-menu-item-id="{!item.id}" href="">{!item.label}</a></li> </aura:set> </aura:if> </aura:iteration> </ul>当我 console.log var linkItems 这是返回的内容:> Proxy {0: {…}, 1: {…}, 2: {…}, 3: {…}, 4: {…}, 5: {…}, 6: {…}, 7: {…}, 8: {…}} > [[Handler]]: Object
[[Target]]: Array(9) > 0: {id: 0, label: "Home", active: false}
1: {id: 1, label: “About”, active: false}
2: {id: 2, label: “Page3”, active: false}
3: {id: 3, label: “Page4”, active: false}这仍然不起作用。单击时,我需要检查所单击链接的 ID,然后检查它是否有子菜单。
2 回答
![?](http://img1.sycdn.imooc.com/545864000001644402200220-100-100.jpg)
慕容708150
TA贡献1831条经验 获得超4个赞
使用Array.filter
:
let itemsWithSubMenu = linkItems.filter(f => f.subMenu && f.subMenu.length);
![?](http://img1.sycdn.imooc.com/545868550001f60202200220-100-100.jpg)
慕后森
TA贡献1802条经验 获得超5个赞
我想我现在明白你的问题了,假设这active意味着点击你必须检查活动项目是否有子菜单
还假设您可以同时打开多个菜单,并且您想在功能中使用打开菜单的 id
anySubmenuOpen = linkItems
.map(f => {
const submenuOpened = f.id == id && f.subMenu && f.subMenu.length > 0;
if(submenuOpened) {
// run code for open menu
}
return submenuOpened
}).reduce((acc,curr) => acc | curr, 0)
if(!anySubmenuOpen) {
// none of the submenus is open, close submenus
}
添加回答
举报
0/150
提交
取消