如何从Sencha Touch 2中的fieldset获取数据?

时间:2012-05-29 11:11:59

标签: touch extjs

我在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')

有没有办法实现这个目标?

5 个答案:

答案 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();