加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

代码分享 , Dojo中menu的简单使用

发布时间:2020-12-16 21:39:54 所属栏目:百科 来源:网络整理
导读:和大家分享一段代码,dojo中tree和menu结合使用,也就是在每个tree节点上右键出现菜单,并对不同业务显示不同菜单,下属代码为项目代码,暂且作为示例代码,下面会对方法做简要分析。 主要方法有两个:其一,buildMenu方法是依附于domNode创建可用的菜单项(
和大家分享一段代码,dojo中tree和menu结合使用,也就是在每个tree节点上右键出现菜单,并对不同业务显示不同菜单,下属代码为项目代码,暂且作为示例代码,下面会对方法做简要分析。

主要方法有两个:其一,buildMenu方法是依附于domNode创建可用的菜单项(dijit.Menu);其二, resetMenuByLevel 方法是根据不同业务,辅以必要的逻辑判断来展示不同的菜单项,即对菜单项进行处理。这里还有一个重要的技术:dojo.aspect的使用,使得我们可以横向管理菜单,并且aspect.before(pMenu,"_openMyself",dojo.hitch(this,function(e){})这段代码,使得在菜单(openMyself)显示之前会进行这样一个function方法。

想必,以上几个点连起来,就可以实现我开头说的那个要求。

_buildMenu : function() {
        var pMenu = new dijit.Menu({

               //指定菜单项需要依附的dom节点
            targetNodeIds : [ this.editClassTree.domNode ],refocus : false
        });

          //将菜单项和dom节点绑定
        pMenu.bindDomNode(this.editClassTree.domNode);
        var aspect = dojo["require"]("dojo.aspect");
        var repository = ecmwdgt.workspace.get("activeRepository");
            aspect.before(pMenu,function(e){
                  var treeNode = this.editClassTree.workTree.selectedNode;
                  this.resetMenuByLevel(treeNode);
     
            }));
        this.connect(pMenu,function(event) {

            this._rightSelectTreeNode = this.editClassTree.workTree.selectedItem;
        });

       
        var createClassDef = new dijit.MenuItem({
            id: this.id + ecmwdgt.getBean("uuid").generate()+"_createClassDef",label : dojo.string.substitute(this.resourceBundle.createClassDef,[this.typeRes]),onClick : dojo.hitch(this,this.createClassDef)
        });
        
        pMenu.addChild(createClassDef);
        pMenu.startup();
        this.treeMenu = pMenu;
    },resetMenuByLevel : function(treeNode){
     //treeItem,为当前选中tree节点,可以由此拿到节点数据
      var treeItem = treeNode.item;

     //拿到当前菜单对象的所有子节点
      var menuItems = this.treeMenu.getChildren();
            
     // 以下可进行逻辑处理操作,云云。

},



如下图,为示例图:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读