声明:这里非常感谢闲心大神,开源了非常好用的前端UI框架,layui,如有侵权请联系我。当然闲心在2.0版本的layuiAdmin已经支持了,不过是收费版的,需要的同学可以自行购买,网址:http://www.layui.com/admin/pro/
本人在做管理后台事用到了左侧的导航列表,但是管理后台进来的菜单是根据不同账户的权限,显示不同的菜单。这时候需要动态的渲染左侧的列表。但是1.0版本只是更新到2级菜单,不满足如下图的3级菜单需求,只能自己动手,改造源码
话不多说,上代码:
1.html部分,我需要一个容器用于渲染菜单
<div class="layui-side layui-bg-black" id="admin-side"> <div class="layui-side-scroll"> <ul class="layui-nav layui-nav-tree" id="nav" lay-filter="demo"></ul> </div> </div>
接下来是插件以及相关JS,css引入 ,注意:路径问题,换成自己本地的路径
<link rel="stylesheet" href="../layui/css/layui.css" rel="external nofollow" > <script src="/UploadFiles/2021-04-02/jquery-1.12.2.js">2.js部分
<script> //监听选中页签添加样式 layui.config({ base: '../layui/' //navbar组件js所在目录 }).use('navbar', function() { var navbar = layui.navbar(); navbar.set({ elem: '#nav', url: "../layui/nav2.json" //数据源地址,我用了本地写的json数据 }); navbar.render(); //下面的部分不是必须的 navbar.on('click(demo)', function(data) { console.log(data.elem); console.log(data.field.title);//标题 console.log(data.field.icon);//图标 console.log(data.field.href);//调转地址 layer.msg(data.field.href); }); //给选中的页签添加选中样式(解决刷新失效问题) var url = window.location.href.replace("//", ""); var relUrl = url.substring(url.lastIndexOf("/") + 1); //去掉参数部分 if (relUrl.indexOf("") != -1) { relUrl = relUrl.split("")[0]; } $("#leftNavbar a").each(function () { var that = this; if ($(that).attr("href") == relUrl) { $(that).parent().addClass("layui-this"); $(that).parents("li:eq(0)").addClass("layui-nav-itemed"); var nodes = $(that).parents("li:eq(0)").find("a .layui-nav-more"); if (nodes.length > 0) { nodes.each(function () { if ($(this).parents("dd:eq(0)").find("[href='" + relUrl + "']").length > 0) { $(this).parent().parent().addClass("layui-nav-itemed"); } }); } } }); }); </script>重点来了:navbar,js
/** * navbar.js * @author 御风 <1945199284@qq.com> */ layui.define(['element', 'common'], function (exports) { "use strict"; var $ = layui.jquery, layer = parent.layer === undefined "layui-nav layui-nav-tree beg-navbar">'; for (var i = 0; i < data.length; i++) { if (data[i].spread) { ulHtml += '<li class="layui-nav-item layui-nav-itemed">'; } else { ulHtml += '<li class="layui-nav-item">'; } if (data[i].children !== undefined && data[i].children !== null && data[i].children.length > 0) { ulHtml += '<a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" >' + data[i].title; ulHtml += '<span class="layui-nav-more"></span>'; ulHtml += '</a>'; ulHtml += '<dl class="layui-nav-child">'; //二级菜单 for (var 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:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" >' + data[i].children[j].title; ulHtml += '<span class="layui-nav-more"></span>'; ulHtml += '</a>'; //三级菜单 ulHtml += '<dl class="layui-nav-child">'; var grandsonNodes = data[i].children[j].children; for (var k = 0; k < grandsonNodes.length; k++) { ulHtml += '<dd>'; ulHtml += '<a href="'+ grandsonNodes[k].href +'" rel="external nofollow" >' + grandsonNodes[k].title + '</a>'; ulHtml += '</dd>'; } ulHtml += '</dl>'; ulHtml += '</dd>'; }else{ ulHtml += '<dd>'; ulHtml += '<a href="'+data[i].children[j].href+'" rel="external nofollow" >' + data[i].children[j].title; ulHtml += '</a>'; ulHtml += '</dd>'; } //ulHtml += '<dd title="' + data[i].children[j].title + '">'; } ulHtml += '</dl>'; } else { var dataUrl = (data[i].href !== undefined && data[i].href !== '') "' + data[i].href + '"' : ''; //ulHtml += '<a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" ' + dataUrl + '>'; ulHtml += '<a href="' + data[i].href + '" rel="external nofollow" ' + dataUrl + '>'; if (data[i].icon !== undefined && data[i].icon !== '') { if (data[i].icon.indexOf('fa-') !== -1) { ulHtml += '<i class="fa ' + data[i].icon + '" aria-hidden="true" data-icon="' + data[i].icon + '"></i>'; } else { ulHtml += '<i class="layui-icon" data-icon="' + data[i].icon + '">' + data[i].icon + '</i>'; } } ulHtml += '<cite>' + data[i].title + '</cite>'; ulHtml += '</a>'; } ulHtml += '</li>'; } ulHtml += '</ul>'; return ulHtml; } var navbar = new Navbar(); exports('navbar', function (options) { return navbar.set(options); }); });公共配置common.js
/** * common.js * @author 御风 <1945199284@qq.com> */ layui.define(['layer'], function(exports) { "use strict"; var $ = layui.jquery, layer = layui.layer; var common = { /** * 抛出一个异常错误信息 * @param {String} msg */ throwError: function(msg) { throw new Error(msg); return; }, /** * 弹出一个错误提示 * @param {String} msg */ msgError: function(msg) { layer.msg(msg, { icon: 5 }); return; } }; exports('common', common); });3.返回数据json格式
[ { "title": "首页", "icon": " ", "spread": true, "href": "" }, { "title": "一级导航", "icon": "fa-stop-circle", "spread": true, "href": "http://www.baidu.com", "children": [ { "title": "二级导航", "icon": "", "href": "lala.html", "spread": true, "children": [ { "title": "三级导航", "icon": " ", "href": "button.html" }, { "title": "三级导航", "icon": " ", "href": "buttwswon.html" } ] } ] }, { "title": "一级导航", "icon": "fa-stop-circle", "spread": true, "href": "http://www.baidu.com" }, { "title": "一级导航", "icon": "fa-stop-circle", "spread": true, "href": "http://www.baidu.com" }, { "title": "一级导航", "icon": "fa-stop-circle", "spread": true, "href": "http://www.baidu.com" } ]总结:渲染dom,只要的思路就是用了2次for循环,遍历后台返回的数据。
以上这篇layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]