LayUI------iframe版生成动态菜单

1、简单的动态生成

复制代码
/**
     * 根据用户权限动态生成菜单
     * @param data
     */
    function setMenu(data) {
        let ulHtml = '<ul class="layui-nav layui-nav-tree ">';
        for (let i = 0; i < data.length; i++) {
            ulHtml += '<li class="layui-nav-item">';
            if (data[i].children !== undefined && data[i].children !== null && data[i].children.length > 0) {
                ulHtml += '<a href="javascript:;" target="option">' + data[i].title;
                ulHtml += '<span class="layui-nav-more"></span>';
                ulHtml += '</a>';
                ulHtml += '<dl class="layui-nav-child">';
                //二级菜单
                for (let j = 0; j < data[i].children.length; j++) {
                    //是否有孙子节点
                    if (data[i].children[j].children !== undefined && data[i].children[j].children !== null && data[i].children[j].children.length > 0) {
                        ulHtml += '<dd>';
                        ulHtml += '<a href="javascript:;" target="option">' + data[i].children[j].title;
                        ulHtml += '<span class="layui-nav-more"></span>';
                        ulHtml += '</a>';
                        //三级菜单
                        ulHtml += '<dl class="layui-nav-child">';
                        let grandsonNodes = data[i].children[j].children;
                        for (let k = 0; k < grandsonNodes.length; k++) {
                            ulHtml += '<dd>';
                            ulHtml += '<a href="' + grandsonNodes[k].href + '" target="option">' + grandsonNodes[k].title + '</a>';
                            ulHtml += '</dd>';
                        }
                        ulHtml += '</dl>';
                        ulHtml += '</dd>';
                    } else {
                        ulHtml += '<dd>';
                        ulHtml += '<a href="' + data[i].children[j].href + '" target="option">' + data[i].children[j].title;
                        ulHtml += '</a>';
                        ulHtml += '</dd>';
                    }
                }
                ulHtml += '</dl>';
            }
            ulHtml += '</li>';
        }
        ulHtml += '</ul>';

        $('#nav-menu').html(ulHtml);
    }
复制代码

2、返回数据格式

复制代码
[
    {
        "id":6,
        "title":"用户管理",
        "field":"menu:userManager",
        "href":"#",
        "children":[
            {
                "id":7,
                "title":"用户列表",
                "field":"menu:userList",
                "href":"user/userList.html",
                "children":[

                ]
            },
            {
                "id":8,
                "title":"角色列表",
                "field":"menu:userRoleList",
                "href":"role/roleList.html",
                "children":[

                ]
            }
        ]
    }
]
复制代码

 

posted @   donleo123  阅读(981)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示