今天突发偶兴,写了一个plugin 用作右击出现菜单栏

1.写extjs plugin插件关键是知道它的的父块是谁,在插件里this.cmp就能获取载入的父级容器

2.插件init()是继承于observable ,这个方法必不可少,执行于initComponent()之后,可以在此处注册父级容器的事件句柄

以达到关联的作用。木想到插件还是挺容易写的.

Ext.define("Ext.ux.ContextMenu",{
    extend:"Ext.AbstractPlugin"
    ,alias:"plugin.contextMenu"
    ,mixins:["Ext.util.Observable"]
    ,owner:""
    ,menu:""
    ,config:{ }
    ,constructor:function(config){
          var me=this;
          Ext.apply(this.config,config);
          me.callParent([config]);
    }
    ,init:function(){
        var me=this;
        me.owner=me.cmp.itemView;
        me.menu=me.getMenu();
        me.owner.on("itemcontextmenu",me.doMenu,me);
    }
    ,getMenu:function(){
        var me=this;
        return Ext.create("Ext.menu.Menu",{
            50
            ,bodyCls:"baseColor"
            ,plain:false
            ,items:[{
                text:"delete"
                ,handler:function(){
                    alert("hi");
                }
            }
            ,{
                text:"上移"
            }
            ,{
                text:"下移"
            }]
        });
    }
    ,doMenu:function(owner,record,item,index,e,eOpsts){
        var me=this;
        e.preventDefault();
        me.menu.showAt(e.xy,true);

    }
});

原文地址:https://www.cnblogs.com/shen119/p/3289166.html