如何从 ExtJS 中的引用中获取值

How to get value from reference in ExtJS

我对 ext js 有疑问,我想使用商店中的引用从我的字段中获取值,但是当我 console.log 时出现错误 lookupReference is not a function

我的表格

items: [
    {
        xtype: 'combobox',
        name: 'REC_TERMINAL_CODE_2',

        fieldLabel: 'Terminal 2',
        emptyText : 'Terminal',
        reference: 'terminal2'
    },
    {
        xtype: 'combobox',
        name: 'REC_TERMINAL_CODE',

        fieldLabel: 'Terminal',
        emptyText : 'Terminal',

        store: {
            type: 'terminal'
        },

        displayField: 'terminal_name',
        valueField: 'terminal_code',
        value: 'T01',
        
        minChars: 3,
        queryParam: 'q',
        queryMode: 'remote',

        editable: false,
        allowBlank: false,

        fieldStyle: 'text-transform:uppercase',

        afterLabelTextTpl: [
        '<span style="color:red;font-weight:bold" data-qtip="Required"> *</span>'
        ],

        flex: 1
    },
]

在我的终端存储文件中

listeners: {
    load: function (store, records, success) {
        console.log(this.lookupReference('terminal2'))
        if (!success) {
            Ext.Msg.confirm('Status Error', 'This connection failed, reload ?',
                function (choice) {
                    if (choice === 'yes') {
                        window.location.reload();
                    }
                }
            );
        }
    }
}

首先,您的侦听器中的this不是指组合框等组件。可能它指的是商店实例或控制器class。尝试确保您访问组件实例。可以通过登录到控制台来确定,ExtJs 中的默认组件具有 xtype 属性,例如组合框、容器等。一旦您可以访问该组件(父组件),您就可以使用函数找到它的子组件,该子组件具有命名引用。

其次,基于他们的docs,您可以使用parentComponent.getReferences()['PARTICULAR_REFERENCE_NAME']函数通过引用获取组件。 parentComponent 可以是表单,容器等。不知道你用的是什么版本的ExtJS,getReferences低版本可能没有这个功能

商店不是组件,因此您可以使用 getReferenceHolder()。您可以使用通用 Ext.ComponentQuery.query('combobox[reference=terminal2]')[0]

这将 return 一组适合查询的组件。

如果你想在上面的例子中获取 ExtJS 组件。
那么你已经启用 referenceHolder 属性 为 true.

参考这个link例如:
Fetching ExtJs Component in View

此 属性 启用视图作为组件的参考持有者 有关详细信息
请参阅 sench 文档 link:
Sencha docs ReferenceHolder