0

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では複雑です。どんな助けでも大歓迎です。

4

1 に答える 1

0

必要に応じて再利用し、必要に応じて次のようなものを使用できるように、参照を保持することもできます。

refs: [{
    ref : 'graph',
    selector : 'params > container > combobox'
}],

また

refs: [{
    ref : 'graph',
    selector : 'params #cmbGraph'
}],

またはまっすぐ:

refs: [{
    ref : 'graph',
    selector : '#cmbGraph'
}],

これらはすべて、コンボボックスへの同じ参照を提供する必要があります。コードをどのように配置するかによって異なります。

var comboValue = me.getGraph().getValue();
于 2013-06-24T22:22:47.587 に答える