Question

J'essaie de construire de manière dynamique un formulaire ExtJS et lorsque j'essaie d'ajouter l'objet mixteCollection construit de manière dynamique au formulaire, je reçois un TypeError: E.MIXINS.LEMENTCT est indéfini Erreur.

<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>

Une autre chose que je ne comprends pas, c'est quand je mets la fonction à l'intérieur de l'auditeur de chargement, rien ne se passe. Je devais donc recourir à l'utilisation de l'événement de rappel.

mise à jour: Form.Ajouter la méthode prend un composant ou une matrice de composants, afin d'ajouter du type mixteCollection, je me réfère à formitems.items pour ajouter la matrice de composants d'affichageFields.

Mais pour une raison quelconque, la charge des auditeurs de magasin ne se déclenche pas lorsque Store.Load est exécuté, quelqu'un a-t-il un problème avec cela? Nevermind ceci ... j'ai compris ... J'ai placé l'auditeur au lieu du proxy au lieu du magasin.

q2

aussi quelque chose de bizarre est que lors de la méthode de rappel de Store.load, les enregistrements ne sont pas retournés avec les valeurs chargées. Nevermind ça ... j'ai compris ... c'était l'objet JSON que je passe. Oublié de le sortir de la structure d'erreur / de données pour le formulaire.

merci

Était-ce utile?

La solution

MixCollection n'est pas un paramètre accepté pour ajouter, vous devez utiliser un tableau.Cette information est dans les docs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top