почему обработчик панели сетки в extjs выполняется без вызова? - PullRequest
0 голосов
/ 06 января 2012

Проблема

Здравствуйте, неудобно то, что когда я загружаю свое приложение, автоматически выполняется обработчик, это код сетки:

   Ext.define('masterDataGrid', {

        extend : 'Ext.grid.Panel',
        windowItems : null,
        addWin : null,


        initComponent : function() {
            var me = this;
            Ext.applyIf(me, {
                        tbar : [{
                                    text : 'Add',
                                    handler :me.onAdd,
                                    scope : me
                                }, '-', {
                                    text : 'Delete',
                                    handler : me.onDelete,
                                    scope : me
                                }, '-']
                    });


            me.callParent(arguments);
        },


        getAddWindow : function() {
            if (!this.addWin) {
                this.addWin = new windowPop({
                            buttons : [{
                                        text : 'i_OK',
                                        handler : this.winOk()
                                    }, {
                                        text : 'i_Cancel',
                                        handler : this.winCancel()
                                    }]
                        });
                this.addWin.add(this.windowItems);
            }
            return this.addWin;
        },


        onAdd : function() {
        var addWindow = this.getAddWindow();
        addWindow.show();
        },


    });

ИЯ называю эту форму mastergrid другим классом, который выходит из нее, это код:

 Ext.define('confEmailEmail', {
        extend : 'masterDataGrid',
        initComponent : function() {
            var me = this;
            me.columns = [{
                        id : 'code',
                        header : 'code',
                        dataIndex : 'code',
                        width : 220
                    }, {
                        header : 'description',
                        dataIndex : 'description',
                        width : 130
                    }, {
                        header : 'multiply',
                        dataIndex : 'multiply',
                        width : 70,
                        align : 'right'
                    }, {
                        header : 'cyrcletime',
                        dataIndex : 'cycletime',
                        width : 95
                    }];


            me.windowItems = [{
                        xtype : 'combobox',
                        id : 'cb_input',
                        fieldLabel : 'i_Input',
                        margin : '5 0 0 5',
                        style : 'font-weight:bold',
                        labelWidth : 120
                    }, {
                        xtype : 'checkbox',
                        id : 'chk_invert',
                        fieldLabel : 'i_Invert',
                        margin : '5 0 0 5',
                        style : 'font-weight:bold',
                        labelWidth : 120
                    }, {
                        xtype : 'combobox',
                        id : 'cb_activeBy',
                        fieldLabel : 'i_Active by',
                        margin : '5 0 0 5',
                        style : 'font-weight:bold',
                        labelWidth : 120
                    }];


            me.callParent(arguments);


        }
    });

она должна открывать окно для добавления новой строки, когда я нажимаю на кнопку добавления, но она показываеткаждый раз, когда я выполняю все приложение.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 09 января 2012

Я понял, это потому, что onAdd является методом для Ext.grid.Panel, затем, когда он пытается загрузить приложение, он обращается к моему методу onAdd, потому что он думает, что я переписал метод onAdd из Ext.grid..Panel.

...