2011-05-24 59 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