layui动态生成导航栏


Head部分

  引入css样式表:

<link rel="stylesheet" href="${pageContext.request.contextPath}/static/layui/css/layui.css">

  引入js库:

<script src="${pageContext.request.contextPath}/static/layui/layui.js"></script>

Html部分

<div class="layui-side">
      <div class="layui-side-scroll" id="navbar_side" lay-filter="side"></div>
</div>

Js部分:数据模拟和数据请求

<script>
//左侧竖导航:模拟数据
layui.config({
    base: 'static/js/',  //需要依赖的navbar.js/tab.js路径
}).use(['element', 'layer', 'navbar', 'tab'], function () {
    var element = layui.element,
        $ = layui.jquery,
        layer = layui.layer,
        navbar = layui.navbar();

   //模拟数据navs
  navs = [
	  {
	    "title": "首页",
	    "icon": "fa fa-home", //左侧图标
	    "spread": false,  //是否默认展开
	    "href": "${pageContext.request.contextPath}/static/modules/main/index.jsp" //点击之后,右侧iframe显示的页面路径
	  },
	  {
	    "title": "营业厅",
	    "icon": "fa fa-desktop ",
	    "spread": false,
	    "href": " ",
	    "children": [  //二级菜单 children
	      {
	        "title": "指标",
	        "icon": "fa fa-flag-checkered",
	        "href": "${pageContext.request.contextPath}/static/modules/main/setting/userList.jsp",
	        "spread": false
	      },
	      {
	        "title": "效益",
	        "icon": "fa fa-line-chart",
	        "href": "${pageContext.request.contextPath}/static/modules/main/setting/userList.jsp",
	        "spread": false
	      }
	    ]
	  },
	  {
	    "title": "系统设置",
	    "icon": "fa fa-cogs",
	    "href": "",
	     "spread":false,
	     "children": [
	         {
	          "title": "权限设置",
	          "icon": "fa fa-balance-scale",
	           "href": ""
	          }
	        ] 
	    },
	  {
	    "title": "明细导入",
	    "icon": "fa fa-file-text",
	    "spread": false,
	    "href": "${pageContext.request.contextPath }/static/modules/DataImport/importExcel.jsp"
	}];
			  
  //设置navbar
    navbar.set({
    	type:'GET', //获取方式
        spreadOne: true,  //设置是否只展开一个二级菜单
        elem: "#navbar_side",  //存在组件的容器
        cached: false,  //是否启用缓存,如果设置为true,则将初始化数据的数据添加至缓存
        data: navs,  //提供给组件的数据列表,请严格按照规定格式提供。
	/*cached:true,  
	url: 'datas/nav.json' //提供数据源远程的URL,当前只支持同步的方式读取数据 */  
    });

    //渲染navbar
    navbar.render();

    //监听点击事件
    navbar.on('click(side)', function (data) {
        var childHtml = data.field.href;//获取当前点击的路径
        $(".layui-body iframe").attr("src",childHtml);//将路径赋值给iframe展示
    });
});
</script>


<script>
//左侧竖导航:请求数据
layui.config({
    base: 'static/js/',  //需要依赖的navbar.js/tab.js路径
}).use(['element', 'layer', 'navbar', 'tab'], function () {
    var element = layui.element,
        $ = layui.jquery,
        layer = layui.layer,
        navbar = layui.navbar();

        $.ajax({
            type:'get',
            url:"${pageContext.request.contextPath }/mainIndexData",
            success:function(data){
                //console.log(data);
                var navData = data.functionList;
                $("#admin_userName").text(data.fullname); //用户名称

            //设置navbar
            navbar.set({
                spreadOne: true,
                elem: "#navbar_side",
                cached: false,
                data: navData
            });

        //渲染navbar
        navbar.render();

        //监听点击事件
        navbar.on('click(side)', function (data) {
        var childHtml = data.field.href;//获取当前点击项的路径
        $(".layui-body iframe").attr("src",childHtml);//将路径赋值给右侧iframe
    });	
    }
});

});
</script>            

navbar.on('event(过滤器值)', callback);

navbar.on('click(side)', function(data) {
    //data参数说明
    //包含两个属性:data.elem 和 data.field
    //data.elem 是点击的a标签dom对象
    //data.field 包含三个属性
    //1、data.field.href  设置的连接地址
    //2、data.field.icon  设置的图标
    //3、data.field.title 设置的标题
     console.log(data.elem);
     console.log(data.field.title);
     console.log(data.field.icon);
     console.log(data.field.href);
});

报错处理:

 

layui.element is not a function  将 element = layui.element() ==> 改为element = layui.element   layui版本为2.0以上

layui2.0版本修改了很多地方:如 var form = layui.form; var element = layui.element; laypage.render(options) 

 

  

 

PS:数据格式需要严格按照规定提供

演示地址: http://m.zhengjinfan.cn/ 

下载地址: http://git.oschina.net/besteasyteam/beginner_admin 

    by  Layui_初学者 

下载文件tab.js  navbar.js

 

(layui学习之导航)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM