Domanda

I'm trying to get the form values in the controller, but only the datepicker's data is returned. Any help will be appreciated.

Form code:

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'
            }
        ]
    }

});

Controller code:

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();
    }

});

When register() is called, values contains:

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

Which is the selected date. Why the other form values are not returned?

È stato utile?

Soluzione

Well, I found the solution just by steeping into Sencha code, and will post the answer for the records. The solution is to set the name property of the form's fields. If you don't need some field data to be returned, don't set the name property.

{
  xtype: 'emailfield',
  id: 'txtEmail',
  label: 'Email',
  name: 'txtEmail',
  placeHolder: 'email@example.com'
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top