ExtJS - 如何获取组件项值

时间:2013-07-16 07:53:21

标签: javascript extjs

我有一个组件如下:

{
    xtype: 'fieldcontainer',
    layout: 'hbox',
    id: 'article-level-container',
    defaultType: 'textfield',
    fieldDefaults: {
        labelAlign: 'top'
    },
    items: [{
        fieldLabel: 'LEVEL',
        name: 'artLevel',
        inputWidth: 216,
        margins: '0 5 5 0',
        allowBlank: false,
        fieldStyle: 'text-align: right; font-size: 13pt; background-color: #EAFFCC;'
    }, {
        fieldLabel: 'VALUE',
        name: 'artValue',
        inputWidth: 216,
        allowBlank: false,
        blankText: 'zorunlu alan, boş bırakılamaz',
        fieldStyle: 'text-align: right; font-size: 13pt; background-color: #EAFFCC;',
        listeners: {
            change: function(textfield, newValue, oldValue) {
                if (oldValue == 'undefined' || newValue == '') {
                    Ext.getCmp('btnArticleSave').disable();
                } else {
                    Ext.getCmp('btnArticleSave').enable();
                }
            }
        }
    }]
} 

我想获得第二项fieldLabel值(在这种情况下为VALUE)。

  • 如何在onReady函数之外获取此字段值?
  • 如何使用新值更改此字段标签(我想用选定的组合框值更改fieldlabel)

更新 我尝试了以下方法:

var artField = Ext.ComponentQuery.query('#articleValueField');
console.log(artField);

Console Output

2 个答案:

答案 0 :(得分:16)

一些常见的方法是使用Ext.ComponentQuery

在其配置中为您的字段指定itemId,例如itemId: 'theField'

 var field= Ext.ComponentQuery.query('#theField')[0];
 field.setFieldLabel(valueFromCombo);

在您的组合中添加一个change监听器,您可以使用向上和向下(这也是组件查询)

listeners: {
  change: function(combo) {
    var form = combo.up('#form');
    var field = form.down('#theField');
    field.setFieldLabel(lookupValueFromCombo);
  }
}

请记住,ext js中的任何配置设置都会获得一个setter和getter,因此fieldLabelgetFieldLabel()& setFieldLabel(s)方法。

修改 上面只有ext js 4.1+ 使用ext js 4.0+,你可以做到:

field.labelEl.update('New Label');

答案 1 :(得分:1)

在组合侦听器之外获取组合框所选项目

yourComboboxName.on('change', function (combo, record, index) {

            alert(record);  // to get the selected item

            console.log(record);  // to get the selected item

        });