Pregunta

Estoy tratando de construir dinámicamente un formulario de extjs y cuando intento agregar el objeto de cálculo mixto construido dinámicamente al formulario, obtengo un error typeError: e.mixins.elentct es un error indefinido .

<div id="form-@pageSpecificVar" class="grid-container even"></div>
<script>

    Ext.define('HeaderForm', {
        extend: 'Ext.form.Panel',
        initComponent: function () {
            var me = this;
            Ext.applyIf(me, {
                id: Ext.id(),
                defaultType: 'textfield',
                items: [{
                    xtype: 'container',
                    items: [{
                        xtype: 'textfield',
                        fieldLabel: 'Test'
                    }]
                }]
            });
            me.callParent(arguments);
        }
    });

    // Define our data model
    Ext.define('HeaderModel', {
        extend: 'Ext.data.Model',
        fields: [
            { name: 'FieldA', type: 'int' }
        ]
    });

    var store = Ext.create('Ext.data.Store', {
        model: 'HeaderModel',
        proxy: {
            type: 'ajax',
            actionMethods: { create: 'POST', read: 'GET', update: 'POST', destroy: 'POST' },
            url: '@Url.Content("~/Test/Header")',
            timeout: 1200000,
        listeners: {
            load: function () {
            }
        }
        }
    });

    store.load({
        scope: this,
        callback: function (records, operation, success) {
                var form = new HeaderForm();
                var formItems = new Ext.util.MixedCollection();
                Ext.each(records[0].fields.items, function (item) {
                    console.log(item);
                    formItems.add(new Ext.form.DisplayField({
                        fieldLabel: 'Test'
                    }));
                }, this);
                console.log(formItems);
                form.add(formItems);
                form.loadRecord(records[0].data);
                form.render('form-@pageSpecificVar');
        }
    });
</script>

Otra cosa que no entiendo es, cuando puse la función dentro del oyente de carga, no pasa nada. Así que tuve que recurrir a usar el evento de devolución de llamada.

Actualizar: El método de Form.add toma un componente o una matriz de componentes, por lo que en lugar de agregar un tipo de cálculo mixto, me refiero a Formitems.items para agregar la matriz de componentes de campos de pantalla.

Pero, por alguna razón, la carga de los oyentes de la tienda no se está disparando cuando se ejecuta. Se ejecuta. ¿Alguien ve un problema con eso? No importa esto ... Me di cuenta ... colocé al oyente en lugar del proxy en lugar de la tienda.

q2

Además, algo raro es que durante el método de devolución de llamada de Store.load, los registros no se devuelven con los valores cargados. No importa esto ... me di cuenta ... Fue el objeto JSON que estoy pasando. Se olvidó de sacarlo de la estructura de error / datos de forma.

gracias

¿Fue útil?

Solución

MEDICEDCOLLECTECTECT No es un parámetro aceptado para agregar, debe usar una matriz.Esta información está en los documentos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top