2010-10-10 128 views
0

當我在網頁中製作一些組件時,發現有很多重複代碼,例如在我的頁面中我想製作兩個圖表。重用JavaScript代碼(減少重複代碼)

他們最大的區別是數據存儲和標題,但他們有很多相同的屬性。

我這樣做的定義Ext.chart的新實例:

var chart1=new Ext.chart.LineChart{config1}; 

var chart2=new Ext.chart.LineChart{config2}; 

裏有CONFIG1和CONFIG2這麼多相同的內容,有什麼想法,避免這種情況?

順便說一句,我曾經想過ext中的擴展機制,但是我不能得到關於如何僅從ext3.2 API使用它的更多細節。

回答

1

您可以擴展配置

var config = { 
    // do you shared config here 
} 

// and apply any different/extending configs here 
var config1 = Ext.apply(config, { title: "Title of config 1" } 
var config2 = Ext.apply(config, { title: "Title of config 2" } 

var chart1 = new Ext.chart.LineChart(config1); 
var chart2 = new Ext.chart.LineChart(config2); 

如果你想讓它更短:

var chart1 = new Ext.chart.LineChart(Ext.apply(config, { 
    title: "Title of config 1" 
}); 
var chart2 = new Ext.chart.LineChart(Ext.apply(config, { 
    title: "Title of config 2" 
}); 

編輯:隨着Ext.extend:

Ext.chart.LineChart = Ext.extend(Ext.chart.LineChart, { 
    // put your shared config in here 
}); 

var chart1 = new Ext.chart.LineChart({ 
    title: "Title of chart 1", 
    store: new Ext.data.Store({ ... }); 
}); 
var chart2 = new Ext.chart.LineChart({ 
    title: "Title of chart 2", 
    store: new Ext.data.Store({ ... }); 
}); 
+0

謝謝,這是一個斯文。我也想知道這是否可以通過擴展機制來實現? – hguser 2010-10-10 13:26:37

+0

是的,你可以。您已經可以將所有默認配置都放入LineChart中,然後只覆蓋已更改的配置 – Tseng 2010-10-10 13:46:45