zoukankan      html  css  js  c++  java
  • Ext2:使用xml构建Ext menu菜单

    点击在新窗口中浏览此图片
    点击在新窗口中浏览此图片
    var menuObj=[{
      text:"快捷",
      icon:'etc/default/images/icons/quick.gif'
        },'-'];
    //下面两个函数用于解析xml为树结构输出
    function createXMLMenu(xmlsrc) {
        var xmlDom=loadXML(xmlsrc);  //加载xml串或url,loadXML函数的定义见http://ajaxbbs.net/blog/post/268/
        var str=menuItemFromXML(xmlDom.documentElement||xmlDom);
        return str;
    }
    function menuItemFromXML(XmlEl) {
        var t=((XmlEl.nodeType==3)?XmlEl.nodeValue:XmlEl.tagName);
        if(t.replace(/\s/g,'').length==0){return null}
        var result = {  //构建菜单项
          text : t,  //菜单文本读取xml标记
          icon:'etc/default/images/icons/quick.gif'  //图标
        };
        
        if(XmlEl.nodeType==1){  //节点
            Ext.each(XmlEl.attributes,function(a){
                if(a.nodeName=="href"&&XmlEl.hasChildNodes()) return;    //目录不添加链接属性
                result[a.nodeName=="href"?"url":a.nodeName]=a.nodeValue;  //添加属性到当前菜单项中
            });

            Ext.each(XmlEl.childNodes,function(el){  //解析子节点,生成子菜单
                if((el.nodeType==1)||(el.nodeType ==3)){
                    var c=menuItemFromXML(el);
                    if(c){
          if(!result["menu"]){  //如果还没有子菜单,则添加menu属性
                        result["menu"]={
                              cls:"menu",
                              items:[c]  //将当前项加入到menu的items中
            }
                      }else{
                        result["menu"]["items"].push(c);  //否则直接添加到items中
                      }
                 }
                }
            });
        }
        return result;
    }
    menuObj.push(createXMLMenu("etc/menu.xml"));  //将创建的菜单项添加到menuObj中
    //继续添加其他菜单
    menuObj=menuObj.concat(['-',{  
                    text: '主页',
                    handler:function(){window.open('http://192.168.3.1');},
                    icon:'etc/default/images/icons/home.gif'
                },{
                    text: '重新登陆',
                    handler:function(){onrelogin();},
                    icon:'etc/default/images/icons/work.gif'
                },{
                    text: '更改密码',
                    handler:function(){changePassword();},
                    icon:'etc/default/images/icons/knowledge.gif'
                },{
                    text: '退出',
                    handler:function(){window.close();window.open('index.htm');},
                    icon:'etc/default/images/icons/exit.gif'
                }
    ]);

    //创建菜单面板
    var menu = new Ext.menu.Menu({
      id: 'mainMenu',
      cls:"menu",
      items: menuObj
    });



    //--------------------menu.xml内容大致结构------------------------------------//
    <?xml version="1.0" encoding="UTF-8"?>
    <我的权限>
    <工作日志 id='ynode-61'>
      <我的日志 href="MyWorkNoteUI.do" />
      <查询日志 href="MyWorkNoteUI.do" />
    </工作日志>
    <图书管理>
      <查找图书 href="MyWorkNoteUI.do" />
    </图书管理>
    </我的权限>
  • 相关阅读:
    spring boot druid 密码加密
    微信小程序报错:Cannot read property ‘forceUpdate‘ of undefined
    uni-app uView 集成遇到问题VM93:5 app.js错误: TypeError: Cannot read property 'mark' of undefined
    uni-app uView 集成遇到问题TypeError: this.getOptions is not a function
    Windows系统zip安装MySQL 5.7 全过程
    Hibernate框架的优缺点及特性
    tomcat部署3种方式
    分布式系统学习
    RabbitMQ Study
    Sprint Boot 学习Q&A
  • 原文地址:https://www.cnblogs.com/winner/p/1243656.html
Copyright © 2011-2022 走看看