我在Sencha Touch 2中有一个字段集如下:
{
id:'contactForm',
xtype: 'fieldset',
title: 'Information',
items: [
{
xtype: 'textfield',
label: 'First Name',
placeHolder: 'Your First Name',
name:'firstName',
id:'firstName',
},
{
xtype: 'textfield',
label: 'Last Name',
placeHolder: 'Your Last Name',
name:'lastName'
},
{
xtype: 'emailfield',
label: 'Email',
placeHolder: 'email@example.com'
},
{
xtype: 'button',
height: 37,
style: 'margin-left:35%',
width: 100,
iconAlign: 'center',
text: 'Submit',
action:'ContactSubmit'
},
{
xtype: 'hiddenfield',
id: 'HNumberOfBedRoom',
value:'2'
},
{
xtype: 'hiddenfield',
id: 'HPetFriendlyId',
value:'2'
}
]
}
在我的控制器中, 我有以下内容:
refs: {
contactForm: '#contactForm'
}
我可以使用
来检索该值
var frmItems=this.getContactForm().getItems();
console.log(frmItems.items[1]._value);
这很好,但我想检索像
这样的值
frm.get('name/id of component')
有没有办法实现这个目标?
答案 0 :(得分:8)
使用Ext.form.Panel作为主容器。
示例代码段
Ext.define('App.view.ContactForm',
{
extend : 'Ext.form.Panel',
xtype : 'contactform',
id : 'contactForm',
config : {
items : [
{
xtype : 'fieldset',
items : [
{
{
xtype: 'textfield',
label: 'First Name',
placeHolder: 'Your First Name',
name:'firstName',
},
]
}
});
控制器中的
refs:{contactForm:'#contactForm'}
然后在你的功能中你可以做到
this.getContactForm().getValues().firstName
(使用字段的名称值)
或
var vals = this.getContactForm().getValues();
vals.firstName;
如果绝对可以帮助它,请避免在顶层使用Ext.getCmp()或平面Ext.get()。如果你正在构建自定义控件,你可能必须使用它们,否则你会对自己造成太大的压力。
答案 1 :(得分:4)
您应该能够为您的字段分配id
,然后Ext.getCmp('-yourId-');
或Ext.get('-yourId-');
(http://docs.sencha.com/touch/2-0/#!/api/Ext.Component-cfg-id)
答案 2 :(得分:0)
不要太挣扎
首先将id分配给该字段,然后使用id来获取值..
{
xtype: 'textfield',
id: 'username', // id
name: 'username',
placeHolder: '------UserName------',
},
Ext.getCmp('username').getValue(); // now get value using that id..
答案 3 :(得分:0)
refs:[
{
ref:'contentForm',
// selector:'#contentForm'
contentForm:'#contentForm'
}
],
-
var form = Ext.getCmp('contentForm');
console.log(form.getValues());
答案 4 :(得分:0)
将itemId: firstName
分配给textfield
在Controller
中,您想要获取值,请使用:
Ext.ComponentQuery.query('textfield[itemId=firstName]')[0].getData();