2015-05-19 80 views
0

我想繪製兩個並排的圖表,通過傳遞不同的參數來使用相同的商店,但兩個圖表都使用第二商店的價值。我可以在Chrome控制檯中看到響應,這對兩個請求和不同的響應是正確的;下面是我的代碼。Extjs圖表挑選錯誤的商店?

Ext.define('testUtility.view.BarChart', { 
    extend: 'Ext.chart.Chart', 
    alias: 'widget.barChart', 
    renderTo: Ext.getBody(), 
    store: Ext.create('Ext.data.Store', { 
    fields: ['name', 'data'], 
    autoLoad: false, 
    proxy: { 
     type: 'ajax', 
     url: 'data/store1', 
     reader: { 
     type: 'json', 
     root: 'Data' 
     }, 
     filterParam: undefined, 
     groupParam: undefined, 
     pageParam: undefined, 
     startParam: undefined, 
     sortParam: undefined, 
     limitParam: undefined 
    } 
    }), 
    axes: [{ 
    type: 'Numeric', 
    position: 'left', 
    fields: ['data'], 
    label: { 
     renderer: Ext.util.Format.numberRenderer('0,0') 
    }, 
    title: 'Values', 
    grid: true, 
    minimum: 0 
    }, { 
    type: 'Category', 
    position: 'bottom', 
    fields: ['name'], 
    title: 'Master' 
    }], 
    series: [{ 
    type: 'column', 
    axis: 'left', 
    highlight: true, 
    tips: { 
     trackMouse: true, 
     width: 100, 
     height: 28, 
     renderer: function(storeItem, item) { 
     this.setTitle(storeItem.get('name') + ': ' + storeItem.get('data') + ' $'); 
     } 
    }, 
    label: { 
     display: 'insideEnd', 
     'text-anchor': 'middle', 
     field: 'data', 
     renderer: Ext.util.Format.numberRenderer('0'), 
     orientation: 'vertical', 
     color: '#333' 
    }, 
    xField: 'name', 
    yField: 'data' 
    }] 
}); 

從取其以後加載存儲app.js

Ext.application({ 
    requires: [ 
    'Ext.container.Viewport' 
    ], 

    name: 'BAR Chart ', 
    launch: function() { 

    var chart1 = Ext.create('testUtility.view.BarChart', { 
     id: 'chart1', 
     height: 300, 
     width: '50%' 
    }); 

    var store1 = chart1.getStore(); 
    store1.proxy.extraParams = { 
     id: chart1.id 
    }; 
    store1.load(); 
    var chart2 = Ext.create('testUtility.view.BarChart', { 
     id: 'chart2', 
     height: 300, 
     width: '50%' 
    }); 

    var store2 = chart2.getStore(); 
    store2.proxy.extraParams = { 
     id: chart2.id 
    }; 
    store2.load(); 
    } 
}); 

這兩個圖表顯示數據。

回答

1

當您在自己的定義中給他們打電話時,兩個商店都是同一個商店。

var chart1 = Ext.create('testUtility.view.BarChart', { 
    id: 'chart1', 
    height: 300, 
    width: '50%', 
    store: store1 
}); 

這是很好的做法,定義自己的店:

Ext.define('testUtility.store.BarChart', { 
    extend: 'Ext.data.Store', 
    ... 
}); 

然後的第一部分之前只用它創建類的,像這樣的情況時,你應該叫商店代碼:

var store1 = Ext.create('testUtility.store.BarChart', { options }); 

您的options包括extraparams,2店的不同。

+0

您最近一直在編輯大量帖子,我感謝您的工作。在編輯特定問題時,只需檢查一篇文章的其他問題。檢查您的活動選項卡中的即興編輯:) – Steve

+0

謝謝史蒂夫,您的意見。你能否詳細說明一篇文章可能存在的「其他問題」?你能否告訴我,我如何檢查「即興編輯」? – MarthyM

+1

其他問題是「小問題」,但值得編輯,因爲你也在解決主要問題。例如,語法錯誤,如over [here](http://stackoverflow.com/posts/13195343/revisions)和[here](http://stackoverflow.com/posts/13339544/revisions)也可以修復。是的,他們很小。沒有直接鏈接即興編輯AFAIK,但你可以看看哪些帖子從[這裏]改進(http://stackoverflow.com/users/4846659/marthym?tab=activity&sort=suggestions) – Steve