如何从 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
我对 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