白板的微信
2021-11-25 19:10:40
我有一個對象,linkItems,它包含一個數(shù)組。我不知道如何檢查點擊的鏈接是否有子菜單然后運行一些代碼,例如不要關(guān)閉菜單否則運行關(guān)閉菜單? <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>當(dāng)我 console.log var linkItems 這是返回的內(nèi)容:> 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 回答

慕容708150
TA貢獻1831條經(jīng)驗 獲得超4個贊
使用Array.filter
:
let itemsWithSubMenu = linkItems.filter(f => f.subMenu && f.subMenu.length);

慕后森
TA貢獻1802條經(jīng)驗 獲得超5個贊
我想我現(xiàn)在明白你的問題了,假設(shè)這active意味著點擊你必須檢查活動項目是否有子菜單
還假設(shè)您可以同時打開多個菜單,并且您想在功能中使用打開菜單的 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
提交
取消