我在这里有这么简单的问题,但找不到......无论如何,下面你可以看到代码。这是面板内有物品。 我想要的是改变文本字段的值,名称为'intIP',它在面板内部,即面板内部。 我怎样才能做到这一点?我找到了关于表单的信息(.getForm方法,但是面板没有这样的)
提前多多感谢
var resultsPanel = Ext.create('Ext.panel.Panel', {
title: title,
renderTo: document.body,
layout: {
type: 'vbox',
align: 'stretch',
},
items: [{
title: 'Details',
name: 'detPanel',
items: [{
name: 'intIP',
fieldLabel: 'internal IP',
xtype: 'textfield',
readOnly: true
}],
}]
});
答案 0 :(得分:7)
在ExtJS 4中,您应该能够使用Ext.Container.query()
方法,当传递正确的选择器时,将返回与选择器匹配的子组件数组。
resultsPanel.query('textfield[name="intIP"]')[0].setValue('New value')
有关如何创建选择器的详细信息,请访问:http://localhost/ext-4.0.2/docs/index.html#/api/Ext.ComponentQuery
在ExtJS3中:每个Ext.Container
都有一个find()
方法,该方法可以是属性名称(name
,xtype
,itemId
等)和值('intP'
,'textfield'
,'fieldId'
)。它将返回一个chlderen组件数组(在任何嵌套级别),其中property具有指示的值。如果在您的容器中只有一个字段的名称为'intP'
,那么您可以使用:
resultsPanel.find('name','intP')[0].setValue('New value')
在ExtJS3和ExtJS4中,如果您有更多具有相同名称的子组件,则使用其他唯一属性(如itemId
)应该有所帮助。
答案 1 :(得分:2)
为文本框指定itemId
并使用resultsPanel.getComponent('itemId').setValue('Value')
此处itemId
将仅限于小组的范围,而不是可在全球范围内使用的id
您也可以使用
resultsPanel.query('#itemId')
或resultsPanel.down('#itemId')
检查最适合您的docs
答案 2 :(得分:0)
如果要将输入字段放入面板,请考虑使用Ext.form.Panel。表单面板有查找其输入组件的方法,如findField。