为什么控制器中的getFormValues()确实使用Sencha Touch 2.3.1返回单个值

时间:2013-12-18 22:07:30

标签: extjs sencha-touch sencha-architect

我正在尝试获取控制器中的表单值,但只返回datepicker的数据。任何帮助将不胜感激。

表格代码:

Ext.define('CoolDisscount.view.FrmRegister', {
    extend: 'Ext.form.Panel',
    alias: 'widget.FrmRegister',

    requires: [
        'Ext.form.FieldSet',
        'Ext.field.Email',
        'Ext.field.DatePicker',
        'Ext.field.TextArea'
    ],

    config: {
        id: 'FrmRegister',
        itemId: 'FrmRegister',
        items: [
            {
                xtype: 'fieldset',
                id: 'fsRegister',
                itemId: 'fsRegister',
                instructions: 'Por favor, rellene los datos de registro',
                title: 'Datos de registro',
                items: [
                    {
                        xtype: 'emailfield',
                        id: 'txtEmail',
                        label: 'Email',
                        placeHolder: 'email@example.com'
                    },
                    {
                        xtype: 'datepickerfield',
                        id: 'calBirthDate',
                        label: 'Fecha de nacimiento',
                        placeHolder: 'mm/dd/yyyy',
                        picker: {
                            doneButton: 'Ok',
                            cancelButton: 'Cancelar'
                        }
                    },
                    {
                        xtype: 'textareafield',
                        id: 'txtCondiciones',
                        label: 'Condiciones de uso',
                        value: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ac arcu vestibulum, eleifend odio sit amet, luctus sem. Duis quis elementum neque. Quisque erat felis, tincidunt nec pellentesque a, mollis gravida nisl. Nunc urna dolor, faucibus ultrices fringilla sed, hendrerit eget eros. Etiam in scelerisque nulla, auctor placerat justo. Curabitur sit amet sem sit amet lorem porttitor mollis. Etiam eu cursus velit. Cras vitae justo nulla. Curabitur fermentum mi in metus iaculis rhoncus eget a metus. Ut congue adipiscing massa, vel iaculis lorem ultrices at. Nunc ut turpis non quam sodales malesuada. Pellentesque eu pellentesque ligula. \n Pellentesque id lorem ornare, eleifend dolor quis, elementum diam. In ornare orci fringilla velit imperdiet blandit. Curabitur commodo, ligula vulputate mattis scelerisque, diam arcu interdum odio, in gravida justo diam sit amet est. Nam at dolor ut justo egestas pellentesque. Vivamus cursus lacinia libero, euismod sollicitudin risus pharetra tristique. In elementum adipiscing risus, et facilisis massa malesuada vitae. Proin vulputate pharetra purus at tempus. Proin sed massa tristique, elementum diam sed, aliquam purus. Duis tempus erat vel libero molestie, volutpat tempor dui placerat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean scelerisque, velit eu vulputate consectetur, enim sem porttitor eros, ut scelerisque leo diam sodales nisi. Maecenas mauris elit, ornare eu dignissim id, placerat eu nisi. Sed adipiscing blandit elementum. Donec eu accumsan metus.\nCras imperdiet sapien neque, et vestibulum velit vestibulum a. In porta lobortis viverra. Vivamus sollicitudin, justo ac ultricies tincidunt, tortor urna facilisis tortor, ut placerat mauris nibh et est. Phasellus mollis dolor lorem, et auctor purus vestibulum ac. Maecenas at quam consequat, molestie erat at, laoreet lorem. Sed pellentesque lectus dui, vel molestie purus scelerisque eget. Ut sed massa vitae sem ullamcorper tincidunt.',
                        readOnly: true
                    },
                    {
                        xtype: 'checkboxfield',
                        id: 'chkAccept',
                        label: 'Acepto las condiciones de uso',
                        checked: true
                    }
                ]
            },
            {
                xtype: 'button',
                id: 'btnRegister',
                text: 'Regístrame'
            }
        ]
    }

});

控制器代码:

Ext.define('CoolDisscount.controller.UserController', {
    extend: 'Ext.app.Controller',

    config: {
        refs: {
            vwRegister: 'formpanel#FrmRegister'
        },

        control: {
            "button#btnRegister": {
                tap: 'register'
            }
        }
    },

    register: function(button, e, eOpts) {
        debugger;
        var form = this.getVwRegister();
        var values = form.getValues();
    }

});

调用register()时,值包含:

{picker: Tue Jan 01 1980 00:00:00 GMT+0100 (W. Europe Standard Time)}

哪个是所选日期。为什么不返回其他表单值?

1 个答案:

答案 0 :(得分:4)

好吧,我只是通过浸入Sencha代码找到了解决方案,并将发布记录的答案。解决方案是设置表单字段的name属性。如果您不需要返回某些字段数据,请不要设置name属性。

{
  xtype: 'emailfield',
  id: 'txtEmail',
  label: 'Email',
  name: 'txtEmail',
  placeHolder: 'email@example.com'
}