Extjs 4 улавливает выбранное значение со списком при нажатии кнопки

Я только начинаю с 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'); 
}

Как видите, я пытаюсь получить значение выпадающего списка с идентификатором = cmbGraph, но это не работает, я получаю сообщение об ошибке:

Uncaught TypeError: Cannot call method 'getValue' of undefined 

С Extjs 4 это сложно, потому что мне нужно добраться до элемента представления с помощью моего контроллера. Любая помощь приветствуется.


person salamey    schedule 18.10.2012    source источник
comment
Решение найдено: я использовал метод down панели параметров: launchChart: function(button){ var params = this.getParams(); var combo1 = params.down('combobox'); вар mycombo = combo1.cmbGraph; console.log(Ext.encode(mycombo)); вар v = combo1.getValue(); console.log(Ext.encode(v)); }   -  person salamey    schedule 18.10.2012


Ответы (1)


Вы также можете сохранить ссылки, чтобы вы могли повторно использовать их, если вам нужно, и использовать что-то вроде этого, если хотите:

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

or

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

или даже прямо:

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

Все они должны дать вам одну и ту же ссылку на поле со списком. Просто зависит от того, как вы организуете свой код.

var comboValue = me.getGraph().getValue();
person radtad    schedule 24.06.2013