2011-05-24 81 views
0

我试图弄清楚ExtJS4如何绕过配置对象。 我想要做的相当于...将配置传递给ExtJS原型

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' 

当试图做复杂的商店扩展时,这在后端咬我。 任何人都有任何想法如何将一串随机参数传递给原型?

回答

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'}); 
+0

的确。更重要的一点是我试图得到一个我没有事先声明的变量,这个变量我曾经能够做到。例如在定义中声明config:{}会引发js错误“awesome.getName不是函数” – Alex 2011-05-24 09:58:12

+0

我不认为您可以动态创建配置和setter/getter方法。 – 2011-05-24 10:24:06

+0

作为一个例子使用所述方法是一个错误,因为我没有打算使用所述方法,实际上只是希望我通过的范围内的配置对象,基本上为我回答它。谢谢。 – Alex 2011-05-24 10:49:02