Extjs 4を始めたばかりで、コンボボックスの選択した値を取得してストアを変更し、各ストアのデータに対応するグラフをレンダリングする必要があります。
私はMVCモデルを使用しています。これが、コンボボックスを含む私のビューです。
Ext.define('Metrics.view.Params', {
extend: 'Ext.grid.Panel',
alias: 'widget.params',
title: 'Select Parameters',
hideHeaders: true,
initComponent: function() {
this.columns = [{
dataIndex: 'name',
flex: 1
}];
this.dockedItems = [{
xtype: 'container',
items: [{
xtype: 'combobox',
id : 'cmbGraph',
mode : 'queryMode',
name : 'graph',
fieldLabel: 'Graph',
store: ['Small data','Big data'],
editable : false
},
{
//another combobox here..
}]
そして私のコントローラーは:
Ext.define('Metrics.controller.RenderGraph', {
extend: 'Ext.app.Controller',
refs: [{
ref : 'params',
selector : 'params'
}],
stores: ['GraphData'],
init: function() {
// Start listening for events on views
this.control({
'paramsbtn button[action=apply]': {
click : this.launchChart
}
});
launchChart : function(button){
var params = this.getParams();
var combo1 = params.items[cmbGraph];
console.log(Ext.encode(combo1));
var v = combo1.getValue();
var r = combo1.findRecord(combo1.valueField || combo1.displayField,v);
return(combo1.store.indexOf(r));
console.log('combo item' + r + 'selected');
}
ご覧のとおり、ID = cmbGraphのコンボボックスの値を取得しようとしていますが、機能していません。表示されるエラーメッセージは次のとおりです。
Uncaught TypeError: Cannot call method 'getValue' of undefined
コントローラーでビューの要素に到達する必要があるため、Extjs4では複雑です。どんな助けでも大歓迎です。