extjs网格中的initPlugin是什么

时间:2014-02-10 11:59:11

标签: extjs extjs3

我有2行动作,所以我尝试添加行动屁股吼叫

var Action1 = {
                     id             : 'id_1',
                     header         : 'Action1',
                     keepSelection  : true,
                     actions        : [{
                                       iconIndex:'ACTION',
                                       qtipIndex:'QTIP1'
                                      }]
                     };


this.ObjAction1 = new Ext.ux.grid.RowActions(Action1); 
this.ObjAction1.on('action',this.myfunc, this);
this.grid.initPlugin(this.ObjAction1);
this.grid.colModel.addColumn(this.ObjAction1); 
this.grid.colModel.getColumnAt(4).width = 100;
// Actions column position
 this.grid.colModel.moveColumn(this.grid.colModel.getColumnCount()-1, 3); 

var Action2 = {
                     id             : 'id_2',
                     header         : 'Action2',
                     keepSelection  : true,
                     actions        : [{
                                       iconIndex:'ACTION',
                                       qtipIndex:'QTIP'
                                      }]
                     };


this.ObjAction2 = new Ext.ux.grid.RowActions(Action2); 
this.ObjAction2.on('action',this.myfunc, this); 
this.grid.initPlugin(this.ObjAction2);
this.grid.colModel.addColumn(this.ObjAction2); 
this.grid.colModel.getColumnAt(3).width = 100;

 this.grid.colModel.moveColumn(this.grid.colModel.getColumnCount()-1, 2); 

在我上面的代码中我使用了2次initPlugin()function(this.grid.initPlugin(this.ObjAction1); and this.grid.initPlugin(this.ObjAction2);)但是当我使用initPlugin()两次时,我的网格弹出窗口没有正确关闭。我试着找initPlugin()但不能

1 个答案:

答案 0 :(得分:1)

如果要对完整的ext代码库进行研究,只需按CTRL + F即可获得ext-all-debug-w-comments.js的版本。正如您在那里看到的那样,initPluginExt.Component中声明一次,并且在同一个类的构造函数中只调用两次。您可以将其称为易于跟踪的代码位!

这是它的代码:

initPlugin : function(p){
    if(p.ptype && !Ext.isFunction(p.init)){
        p = Ext.ComponentMgr.createPlugin(p);
    }else if(Ext.isString(p)){
        p = Ext.ComponentMgr.createPlugin({
            ptype: p
        });
    }
    p.init(this);
    return p;
},

它没有做太多,它实例化作为配置对象或字符串传递的插件,并最终调用插件的init方法,句点。 OMG,是不是应该被称为“纯度”?无论如何,这段代码很容易理解,很明显你的问题不是来自你两次调用initPlugin的事实。你每次都在不同的实例上调用它,每次只调用一次......这样就不会弄乱它们的状态。我对Ext.ux.grid.RowActions'代码进行了简短的一瞥,并且(不出所料),它似乎没有将其状态混合到原型中......此外,即使我不了解整个代码,你也是'重新显示,我没有看到任何红旗,你自己也打破了这个状态。你可能正面临着一个在Ext 3中并不那么不寻常的错误案例,特别是在它的“ux”中(纯洁和坦率是近亲......)。