menu.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*
  2. * @Author: https://github.com/WangEn
  3. * @Author: https://gitee.com/lovetime/
  4. * @Date: 2019-06-18
  5. * @lastModify 2019-06-20 11:45:41
  6. * +----------------------------------------------------------------------
  7. * | Weadmin [ 后台管理模板 ]
  8. * | 基于Layui http://www.layui.com/
  9. * +----------------------------------------------------------------------
  10. */
  11. /**
  12. * 扩展一个Menu模块,动态获取左侧菜单
  13. * 目前多级子菜单是通过延时循环获取的方式
  14. * 也可以采用点击时获取下级子菜单的方式
  15. * 当然,具体的情况要参照自己的需求及api返回结构
  16. **/
  17. layui.define('jquery', function(exports) {
  18. var $ = layui.jquery;
  19. var menu = {
  20. getMenu: function(curl) {
  21. var that = this;
  22. if (!$('#side-nav').length) {
  23. return;
  24. }
  25. $.getJSON(curl, function(res) {
  26. var menuList = res.data;
  27. var items = [];
  28. var _ul = $('<ul></ul>').addClass('nav').attr('id', 'nav');
  29. $.each(menuList, function(index, val) {
  30. var item = '<li id="menu' + val.id + '"><a _href="' + val.url + '"><i class="iconfont">' + val.icon +
  31. '</i><cite>' + val.name +
  32. '</cite><i class="iconfont nav_right">&#xe697;</i></a></li>';
  33. items.push(item);
  34. if (val.children && val.children.length) {
  35. //有二级子菜单
  36. setTimeout(function() {
  37. that.getSubMenu(val.id, val.children);
  38. }, 500);
  39. }
  40. });
  41. $('#side-nav').empty();
  42. _ul.append(items.join(''));
  43. $('#side-nav').append(_ul);
  44. });
  45. },
  46. /**
  47. * @param {Object} id 上级子菜单id,拼接menu获取元素
  48. * @param {Object} subList 子菜单列表
  49. */
  50. getSubMenu: function(id, subList) {
  51. var that = this;
  52. var subItems = [];
  53. var subUl = $('<ul></ul>').addClass('sub-menu');
  54. $.each(subList, function(idx, sub) {
  55. var subItem = '<li id="menu' + sub.id + '"><a _href="' + sub.url + '"><i class="iconfont">&#xe6a7;</i><cite>' +
  56. sub.name + '</cite></a></li>';
  57. subItems.push(subItem);
  58. if (sub.children && sub.children.length) {
  59. setTimeout(function() {
  60. that.getSubMenu(sub.id, sub.children);
  61. }, 1500);
  62. }
  63. });
  64. subUl.append(subItems.join(''));
  65. $('#menu' + id).append(subUl);
  66. }
  67. };
  68. exports('menu', menu);
  69. });