在 Ext.panel.Panel 中查找字段
Find field in Ext.panel.Panel
在Ext.form.Panel
中我们可以找到这样的所有字段:form.findField('field_name')
有没有一种简单的方法可以在 Ext.panel.Panel
中查找字段?
Ext.ComponentQuery.query();
是你的朋友。基本上,此功能允许您使用 jquery-esque 选择器搜索应用程序中的任何 ext 元素。
参见:http://docs.sencha.com/extjs/6.0.1/classic/Ext.ComponentQuery.html
另一种选择是使用 down() 函数搜索对象的子项或使用 up() 函数搜索祖先。
即:panel.down('field')
生成所有字段 xtype 元素,这些元素是面板变量中任何内容的后代(在任何级别上)。
注意:并非所有的 Ext 元素都有 up 和 down 方法。在那种情况下,您仍然可以使用 componentquery 并在选择器部分表示层次结构。
Is there a simple way to find fields in Ext.panel.Panel?
是的,在 panel 或任何其他组件(仅包含某些项目的组件)中,您可以使用不同的方式找到组件。
1. 使用 down() 检索与传递的选择器匹配的此容器的第一个后代。
2. 使用 getComponent() 尝试默认组件查找。如果在普通项目中找不到该组件,则搜索停靠项目并返回匹配的组件(如果有)。
3. 使用 Ext.ComponentQuery.query 可在 Ext.ComponentManager(全局)或文档上的特定 Ext.container.Container 内搜索具有类似功能的组件CSS 选择器的语法。 Returns 匹配组件数组,或空数组。
Here I have created an sencha fiddle demo you can check here how it is working.
Ext.create('Ext.panel.Panel', {
bodyPadding: 5, // Don't want content to crunch against the borders
width: '100%',
title: 'Find Components',
layout: {
type: 'vbox',
align: 'center',
pack: 'center'
},
items: [{
xtype: 'textfield',
name: 'fullname',
itemId: 'fullname',
fieldLabel: 'Name'
}, {
xtype: 'datefield',
name: 'dob',
itemId: 'dob',
fieldLabel: 'Date Of Birth'
}, {
xtype: 'combobox',
name: 'state',
itemId: 'state',
store: Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data: [{
"abbr": "AL",
"name": "Alabama"
}, {
"abbr": "AK",
"name": "Alaska"
}, {
"abbr": "AZ",
"name": "Arizona"
}]
}),
fieldLabel: 'Choose State',
queryMode: 'local',
valueField: 'abbr'
}, {
xtype: 'numberfield',
name: 'mobile',
itemId: 'mobile',
fieldLabel: 'Mobile Number'
}, {
xtype: 'textareafield',
name: 'feedback',
itemId: 'feedback',
fieldLabel: 'Feedback'
}, {
xtype: 'button',
text: 'Get All Component',
handler: function () {
this.up('panel').doGetAllComponent(['dob','fullname','state','feedback','mobile']);
}
}],
renderTo: Ext.getBody(),
doGetAllComponent: function (data) {
var panel = this;
data.map(function (value) {
console.log('find component using name config');
console.log(panel.down('[name=' + value + ']'));
console.log('find component using itemId');
console.log(panel.down('#' + value));
console.log('find component using getComponent ');
console.log(panel.getComponent(value));
console.log('find component using Ext.ComponentQuery.query()');
console.log(Ext.ComponentQuery.query('#' + value)[0]);
});
}
});
Ext.ComponentQuery、up/Down、Ext.get() 通常会影响应用程序的性能。您可以使用计时器功能测试组件拉取的行为。我的建议是 naming reference.
查看
{
xtype: 'numberfield',
name: 'mobile',
itemId: 'numMobileId',
fieldLabel: 'Mobile Number'
},
控制器:
refs:{
'numMobileId' : 'PersonalInfo [itemId='numMobileId']';
}
在Ext.form.Panel
中我们可以找到这样的所有字段:form.findField('field_name')
有没有一种简单的方法可以在 Ext.panel.Panel
中查找字段?
Ext.ComponentQuery.query();
是你的朋友。基本上,此功能允许您使用 jquery-esque 选择器搜索应用程序中的任何 ext 元素。
参见:http://docs.sencha.com/extjs/6.0.1/classic/Ext.ComponentQuery.html
另一种选择是使用 down() 函数搜索对象的子项或使用 up() 函数搜索祖先。
即:panel.down('field')
生成所有字段 xtype 元素,这些元素是面板变量中任何内容的后代(在任何级别上)。
注意:并非所有的 Ext 元素都有 up 和 down 方法。在那种情况下,您仍然可以使用 componentquery 并在选择器部分表示层次结构。
Is there a simple way to find fields in Ext.panel.Panel?
是的,在 panel 或任何其他组件(仅包含某些项目的组件)中,您可以使用不同的方式找到组件。
1. 使用 down() 检索与传递的选择器匹配的此容器的第一个后代。
2. 使用 getComponent() 尝试默认组件查找。如果在普通项目中找不到该组件,则搜索停靠项目并返回匹配的组件(如果有)。
3. 使用 Ext.ComponentQuery.query 可在 Ext.ComponentManager(全局)或文档上的特定 Ext.container.Container 内搜索具有类似功能的组件CSS 选择器的语法。 Returns 匹配组件数组,或空数组。
Here I have created an sencha fiddle demo you can check here how it is working.
Ext.create('Ext.panel.Panel', {
bodyPadding: 5, // Don't want content to crunch against the borders
width: '100%',
title: 'Find Components',
layout: {
type: 'vbox',
align: 'center',
pack: 'center'
},
items: [{
xtype: 'textfield',
name: 'fullname',
itemId: 'fullname',
fieldLabel: 'Name'
}, {
xtype: 'datefield',
name: 'dob',
itemId: 'dob',
fieldLabel: 'Date Of Birth'
}, {
xtype: 'combobox',
name: 'state',
itemId: 'state',
store: Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data: [{
"abbr": "AL",
"name": "Alabama"
}, {
"abbr": "AK",
"name": "Alaska"
}, {
"abbr": "AZ",
"name": "Arizona"
}]
}),
fieldLabel: 'Choose State',
queryMode: 'local',
valueField: 'abbr'
}, {
xtype: 'numberfield',
name: 'mobile',
itemId: 'mobile',
fieldLabel: 'Mobile Number'
}, {
xtype: 'textareafield',
name: 'feedback',
itemId: 'feedback',
fieldLabel: 'Feedback'
}, {
xtype: 'button',
text: 'Get All Component',
handler: function () {
this.up('panel').doGetAllComponent(['dob','fullname','state','feedback','mobile']);
}
}],
renderTo: Ext.getBody(),
doGetAllComponent: function (data) {
var panel = this;
data.map(function (value) {
console.log('find component using name config');
console.log(panel.down('[name=' + value + ']'));
console.log('find component using itemId');
console.log(panel.down('#' + value));
console.log('find component using getComponent ');
console.log(panel.getComponent(value));
console.log('find component using Ext.ComponentQuery.query()');
console.log(Ext.ComponentQuery.query('#' + value)[0]);
});
}
});
Ext.ComponentQuery、up/Down、Ext.get() 通常会影响应用程序的性能。您可以使用计时器功能测试组件拉取的行为。我的建议是 naming reference.
查看
{
xtype: 'numberfield',
name: 'mobile',
itemId: 'numMobileId',
fieldLabel: 'Mobile Number'
},
控制器:
refs:{
'numMobileId' : 'PersonalInfo [itemId='numMobileId']';
}