前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AdminLTE实现动态菜单

AdminLTE实现动态菜单

作者头像
WindCoder
发布2018-09-19 11:13:54
4.6K0
发布2018-09-19 11:13:54
举报
文章被收录于专栏:WindCoderWindCoder

前言

本篇内容基于上一篇AdminLTE实现局部刷新,在完成局部刷新后,不满足其左侧菜单栏的写死状态,希望后期能从数据库读取动态生成,故有了本篇尝试。

正文

目前依旧是在adminlte.js中做的修改。

菜单JSON样式
代码语言:javascript
复制
  var menuJson=[{
      "name": "用户管理",
      "controller":"#",
      "child": [{
          "name": "用户概览",
          "controller":"user/home.do",
      },{
          "name": "添加用户",
          "controller":"user/add.do",
      }]
  },{
      "name": "文章管理",
      "controller":"#",
      "child": [{
          "name": "文章概览",
          "controller":"post/home.do",
      },{
          "name": "添加文章",
          "controller":"post/add.do",
      }]
  }];

菜单初始化方法menuInit

这里面涉及到对菜单的拼接填充等操作

代码语言:javascript
复制
 function menuInit() {
      var menu = null;
      var html = null;
      var chidLen = null;
      var child = null;
      for (var i = 0; i < menuJson.length; i++) {
          menu = menuJson[i];
          if(i==0){
              html = $(' <li menu-id="' + i + '" class="active treeview "><li>');
          }else{
              html = $(' <li menu-id="' + i + '" class="treeview "><li>');
          }

          $(".sidebar .sidebar-menu").append(html);

          html = $(' <a href="'+menu.controller+'"> <i class="fa fa-dashboard"></i> <span>'+menu.name+'</span> <span class="pull-right-container"> <i class="fa fa-angle-left pull-right"></i> </span> </a> <ul menuUl-id="'+i+'" class="treeview-menu"> </ul>');
          $('[menu-id="'+i+'"]').append(html);

          chidLen = menu.child.length;
          for (var j=0;j<chidLen;j++){
              child = menu.child[j];
              if(i==0&&j==0){
                  html = $('<li class="active"><a href="javascript:void(0);" menu-controller="'+child.controller+'"><i class="fa fa-circle-o"></i> '+child.name+'</a></li>');
              }else{
                  html = $('<li class=""><a href="javascript:void(0);" menu-controller="'+child.controller+'"><i class="fa fa-circle-o"></i> '+child.name+'</a></li>');
              }

              $('[menuUl-id="'+i+'"]').append(html);
          }
      }
      $(Selector.data).each(function () {
          Plugin.call($(this))
      })
      $(".sidebar-menu li:first ul li:first a").click();
  }
菜单初始化方法menuInit调用位置

该出是替换了原本菜单的初始化方法。可通过查询 Tree Data API 到达。

代码语言:javascript
复制
  // Tree Data API
  // =============
  $(window).on('load', function () {
      menuInit();
  })

后记

关键代码已全部贴出,一般略微看看是可以自己写出来的。

为照顾纯前端同学,地址已改为纯前端实现。

-2017-08-21

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • 菜单JSON样式
      • 菜单初始化方法menuInit
        • 菜单初始化方法menuInit调用位置
    • 后记
    相关产品与服务
    数据库
    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档