美文网首页
递归生成菜单

递归生成菜单

作者: 908c5d752fc4 | 来源:发表于2019-09-29 14:03 被阅读0次

仅仅是一个demo,用来给团队示例讲解

/**
 *  2019-09-08.
 */


/**
 * 创建一级菜单项,没有url,easyUI要求放在panel内部
 * @param title
 */
function getPanelHeader(title){
    var topMenu = [];
    topMenu.push('  <div class="panel-header panel-header-noborder accordion-header accordion-header-selected" style="height: 16px; width: 189px;">');
    topMenu.push('      <div class="panel-title panel-with-icon">' + title + '</div>');
    topMenu.push('      <div class="panel-tool"> <a href="javascript:void(0)" class="accordion-collapse"></a></div>');
    topMenu.push('  </div>');
    return topMenu.join("").toString();

}


/**
 * 创建子菜单项的容器
 */
function getPanelBody(menuItems){
    var topMenu = [];
    topMenu.push('<div title="" class="panel-body panel-body-noborder accordion-body" style="display: block; width: 199px;">');
    topMenu.push('  <ul class="navlist">');
    topMenu.push(       menuItems);
    topMenu.push(   '</ul>');
    topMenu.push('</div>');
    return topMenu.join("").toString();
}
/**
 * 创建菜单子项
 * @param title
 * @param url
 * @returns {string}
 */
function getPanelBoyInsideMenuItem(title,url){
    var topMenu = [];
    topMenu.push('<li>');
    topMenu.push('  <div>');
    topMenu.push('      <a  href="#" pageUrl="'+ url +'"><img src="../images/increase.png">&nbsp;<span class="nav">' + title + '</span></a>');
    topMenu.push('   </div>');
    topMenu.push('</li>');
    return topMenu.join("").toString();
}
/**
 * 获取本系统菜单数据
 * @param iscMenuJson 树的json对象
 * @returns {*}
 */
function getMenuData(iscMenuJson){
    var funcNode = iscMenuJson.funcNode;
    if(funcNode != null && funcNode.length >0){
        var menus = funcNode[0];
        if(menus != null && menus.length != 0){
            return menus.nextNode;
        }else{
            return null;
        }
    }
}


function create(node){
    var menus = [];
    var name = node.currentNode.name;
    var url = node.currentNode.url;

    var panelHead = getPanelHeader(name);
    menus.push(panelHead);


    if(hasChildNode(node)){
        var childNodes = getChildNode(node);
        var items = [];
        for(var i = 0; i < childNodes.length;i++){
            var childName = childNodes[i].currentNode.name;
            var childUrl = childNodes[i].currentNode.url;

            if(hasChildNode(childNodes[i])){
                items.push(create(childNodes[i]));//递归
            }else{
                var childItem = getPanelBoyInsideMenuItem(childName,childUrl);
                //子节点缓存
                items.push(childItem);
            }
        }
        var panelBody = getPanelBody(items.join("").toString());
        menus.push(panelBody);

    }

    return menus.join("").toString();


}

function getChildNode(currentNode){
    if(hasChildNode(currentNode)){
        return currentNode.nextNode;
    }
    return null;


}


function hasChildNode(currentNode){
    if(currentNode && currentNode.nextNode){
        var nextNode =  currentNode.nextNode;
        return nextNode && nextNode.length != 0;
    }
}



相关文章

网友评论

      本文标题:递归生成菜单

      本文链接:https://www.haomeiwen.com/subject/ntppyctx.html