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 

Extjs 4 很复杂,因为我必须使用控制器访问视图的元素。任何帮助将非常感激。

4

1 回答 1

0

您还可以保留 refs,以便在需要时可以重复使用它们,如果需要,可以使用类似的东西:

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 回答