为了账号安全,请及时绑定邮箱和手机立即绑定

检查数组中链接的单击是否具有子菜单键值。IF true 运行一些代码 ELSE 运行其他代码

检查数组中链接的单击是否具有子菜单键值。IF true 运行一些代码 ELSE 运行其他代码

白板的微信 2021-11-25 19:10:40
我有一个对象,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 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

使用Array.filter

let itemsWithSubMenu = linkItems.filter(f => f.subMenu && f.subMenu.length);


查看完整回答
反对 回复 2021-11-25
?
慕后森

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

}


查看完整回答
反对 回复 2021-11-25
  • 2 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信