سؤال

أحاول إنشاء نموذج extjs ديناميكيًا وعندما أحاول إضافة كائن MixedCollection المبني ديناميكيًا إلى النموذج أحصل على خطأ مطبعي:e.mixins.elementCt غير محدد خطأ.

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

شيء آخر لا أفهمه هو أنه عندما أضع الوظيفة داخل مستمع التحميل، لا يحدث شيء.لذلك اضطررت إلى اللجوء إلى استخدام حدث رد الاتصال.

تحديث: يأخذ الأسلوب form.add مكونًا أو مصفوفة مكون، لذا بدلاً من إضافة نوع MixedCollection أشير إلى formItems.items لإضافة مصفوفة مكونات حقول العرض.

ولكن لسبب ما، لا يتم تشغيل تحميل مستمعي المتجر عند تنفيذ store.load، هل يرى أحد مشكلة في ذلك؟لا يهم هذا...اكتشفت...لقد وضعت المستمع بدلاً من الوكيل بدلاً من المتجر.

س2

ومن الأشياء الغريبة أيضًا أنه أثناء طريقة رد الاتصال الخاصة بـ store.load، لا يتم إرجاع السجلات بالقيم المحملة.لا يهم هذا...اكتشفت...لقد كان كائن json الذي أمرره.نسيت إخراجها من بنية الخطأ/البيانات للنموذج.

شكرًا

هل كانت مفيدة؟

المحلول

MixedCollection ليس معلمة مقبولة للإضافة، فأنت بحاجة إلى استخدام مصفوفة.هذه المعلومات موجودة في المستندات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top