3

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

有没有办法做到这一点?

4

5 回答 5

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',
             },
         ]
       }
});

在你的控制器中

参考:{contactForm:'#contactForm'}

然后在你的函数中你可以做

this.getContactForm().getValues().firstName

(使用字段的名称值)

或者

var vals = this.getContactForm().getValues();
vals.firstName;

如果您绝对可以提供帮助,请避免在顶层使用 Ext.getCmp() 或平面 Ext.get()。如果您正在构建自定义控件,则可能必须使用这些控件,否则您将自己弄得太难了。

于 2012-06-15T19:41:06.120 回答
4

您应该能够为id您的字段分配一个,然后Ext.getCmp('-yourId-');Ext.get('-yourId-');

http://docs.sencha.com/touch/2-0/#!/api/Ext.Component-cfg-id

于 2012-05-31T12:05:43.443 回答
0

不要太挣扎

首先将 id 分配给该字段并使用 id 获取值就是这样..

     {
          xtype: 'textfield',
          id: 'username',      // id
          name: 'username',
          placeHolder: '------UserName------',                 
        },


         Ext.getCmp('username').getValue();     // now get value using that id..
于 2013-04-05T04:16:13.483 回答
0
refs:[
        {
            ref:'contentForm',
            // selector:'#contentForm'
            contentForm:'#contentForm'
        }
    ],

-

var form = Ext.getCmp('contentForm');

console.log(form.getValues());
于 2013-08-22T04:03:49.820 回答
0

分配itemId: firstNametextfield

在 中Controller,您想要获取值的地方,使用这个:

Ext.ComponentQuery.query('textfield[itemId=firstName]')[0].getData();
于 2014-11-09T11:35:07.080 回答