Extjs 4在按钮点击中捕捉组合框选择的值

时间:2012-10-18 07:26:23

标签: javascript combobox extjs4 extjs-mvc

我刚开始使用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 

Extjs 4很复杂,因为我必须使用我的控制器来获取视图元素。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您还可以保留引用,以便在需要时可以重复使用它们,并在需要时使用此类内容:

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

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

甚至直接:

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

这些都应该给你与组合框相同的参考。只是取决于您如何安排代码。

var comboValue = me.getGraph().getValue();