扩展ExtJS FormPanel中的this.getForm问题

时间:2011-09-05 14:39:43

标签: javascript forms button extjs

我有一个formpanel,它被扩展为创建一个从另一个文件调用的类。 设置的工作原理是它显示正确。

我面临的问题是,每当我按下提交按钮时,我都会在Firebug中收到错误“this.getForm is not function”。

我的代码来自一个与我完全相同的设置的教程,所以我不明白为什么我一直收到这个错误。

SearchForm = Ext.extend(Ext.FormPanel, {
     id: 'myForm'
     ,title: 'Search Form'
     ,frame:true    
     ,waitMessage: 'Please wait.'          
     ,initComponent: function() {    
         var config = {                 
            items: [{
                layout:'column',
                items:[{
                    columnWidth:.3,
                    layout: 'form',
                    items: [{
                        xtype:'combo',                              
                        id: 'reportSelecCmb1',                              
                        hiddenName: 'ddi_country',                           
                        anchor:'98%',
                        store: dateStore,
                        displayField: 'name',
                        valueField: 'alpha2code',
                        selectOnFocus: true,
                        mode: 'local',
                        typeAhead: true,
                        editable: false,
                        triggerAction: 'all',
                        value: 'report_date',
                        listeners: {
                            select: {
                                fn:function(combo, value){
                                   myStore.load({params:{ddi_country: this.value}});
                                        }
                                    }  
                                }
                            }, 
                        ...
                }],
                buttons: [{
                    text: 'Submit',
                    id: "submitBtn",                    
                    handler: this.submit
                },{
                    text: 'Reset'
                }] 
            }]};

            // apply config
            Ext.apply(this, config);
            Ext.apply(this.initialConfig, config);

            SearchForm.superclass.initComponent.apply(this, arguments);      

        }

    ,submit : function(url, waitMsg) {
        this.getForm().submit({
            url: url
            ,scope: this
            ,waitMsg: waitMsg
            ,success: this.onSuccess
            //,failure: this.onFailure
        })
    }

    ,onSuccess: function(form, action) {    
        Ext.Msg.show({  
            title: 'Success'    
            ,msg: 'Success!'    
            ,modal: true    
            ,icon: Ext.Msg.INFO 
            ,buttons: Ext.Msg.OK    
        }); 
    }

});

1 个答案:

答案 0 :(得分:1)

您的按钮存在范围问题。

通过添加指向 this 的范围:

,将按钮定义更改为以下内容
buttons: [{
    text: 'Submit',
    id: "submitBtn",                    
    handler: this.submit,
    scope: this
},{
    text: 'Reset'
}] 

希望它有所帮助。