将配置传递给ExtJS原型

时间:2011-05-24 09:03:31

标签: config extjs4

我正在试图弄清楚ExtJS4如何传递配置对象。 我想做相当于......

store  = function(config){
    if ( typeof config.call !== 'unndefined' ){
        config.url = "server.php?c=" + config.call || config.url;       
    };  
    Sketch.Data.AutoSaveStore.superclass.constructor.call(this,config);
};
Ext.extend(store, Ext.data.Store{})    

我可能在这里遗漏了一些明显的东西,但是在沙盒文件中挖了一下,我最接近的就是....

 Ext.define('My.awesome.Class', {
     // what i would like to pass.
     config:{},
     constructor: function(config) {
         this.initConfig(config);
         return this;
     }
 });

如果您执行类似...

之类的操作似乎不起作用
var awesome = Ext.create('My.awesome.Class',{
    name="Super awesome"
});  
alert(awesome.getName()); // 'awesome.getName is not a function'

然而

  Ext.define('My.awesome.Class', {
     // The default config
     config: {
         name: 'Awesome',
         isAwesome: true
     },
     constructor: function(config) {
         this.initConfig(config);
         return this;
     }
 });

var awesome = Ext.create('My.awesome.Class',{
    name="Super awesome"
});  
alert(awesome.getName()); // 'Super Awesome'

在尝试进行复杂的商店扩展时,这让我在后端咬我。 任何人都知道如何将一堆随机参数传递给原型?

1 个答案:

答案 0 :(得分:5)

您不应该使用new运算符在类上创建新实例。在ExtJS4中,您应该使用Ext.create()方法。

尝试做:

var awesome = Ext.create('My.awesome.Class');
alert(awesome.getName());

如果您想在创建实例时传递一些参数,可以执行以下操作

var awesome = Ext.create('My.awesome.Class',{name:'New Awesome'});