Ext.ns('MyApp'); MyApp.AbstractFormPanel = Ext.extend(Ext.form.FormPanel, { submitUrl:null ,initComponent:function() { // create config object
var config = {}; // build config this.buildConfig(config); // apply config Ext.apply(this, Ext.apply(this.initialConfig, config)); // call parent MyApp.AbstractFormPanel.superclass.initComponent.call(this); } // eo function initComponent ,buildConfig:function(config) { this.buildItems(config); this.buildButtons(config); this.buildTbar(config); this.buildBbar(config); } // eo function buildConfig ,buildItems:function(config) { config.items = undefined; } // eo function buildItems ,buildButtons:function(config) { config.buttons = undefined; } // eo function buildButtons ,buildTbar:function(config) { config.tbar = undefined; } // eo function buildTbar ,buildBbar:function(config) { config.bbar = undefined; } // eo function buildBbar }); // eo extend
例如
Ext.ns('MyApp'); MyApp.AbstractFormPanel = Ext.extend(Ext.form.FormPanel, { defaultType:'textfield' ,frame:true ,width:300 ,height:200 ,labelWidth:75 ,submitUrl:null ,submitT:'Submit' ,cancelT:'Cancel' ,initComponent:function() { // create config object var config = { defaults:{anchor:'-10'} }; // build config this.buildConfig(config); // apply config Ext.apply(this, Ext.apply(this.initialConfig, config)); // call parent MyApp.AbstractFormPanel.superclass.initComponent.call(this); } // eo function initComponent ,buildConfig:function(config) { this.buildItems(config); this.buildButtons(config); this.buildTbar(config); this.buildBbar(config); } // eo function buildConfig ,buildItems:function(config) { config.items = undefined; } // eo function buildItems ,buildButtons:function(config) { config.buttons = [{ text:this.submitT ,scope:this ,handler:this.onSubmit ,iconCls:'icon-disk' },{ text:this.cancelT ,scope:this ,handler:this.onCancel ,iconCls:'icon-undo' }]; } // eo function buildButtons ,buildTbar:function(config) { config.tbar = undefined; } // eo function buildTbar ,buildBbar:function(config) { config.bbar = undefined; } // eo function buildBbar ,onSubmit:function() { Ext.MessageBox.alert('Submit', this.submitUrl); } // eo function onSubmit ,onCancel:function() { this.el.mask('This form is canceled'); } // eo function onCancel }); // eo extend
转自http://blog.extjs.eu/know-how/factory-functions-in-ext-extensions/