【问题标题】:Error adding MixedCollection component to extjs form将 MixedCollection 组件添加到 extjs 表单时出错
【发布时间】:2012-09-23 22:47:57
【问题描述】:

我正在尝试动态构建 extjs 表单,当我尝试将动态构建的 MixedCollection 对象添加到表单时,我收到 TypeError: e.mixins.elementCt is undefined 错误。

<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 来添加 displayfields 组件的数组。

但是由于某种原因,store 监听器加载在 store.load 执行时没有被触发,有没有人发现这有问题? 没关系...我想通了...我放置了侦听器而不是代理而不是存储。

第二季度

还有一点很奇怪的是,在store.load的回调方法中,记录并没有和加载的值一起返回。 没关系...我想通了...这是我传递的json对象。忘记将其从表单的错误/数据结构中取出。

谢谢

【问题讨论】:

    标签: javascript dynamic extjs extjs4.1


    【解决方案1】:

    MixedCollection 不是 add 的可接受参数,您需要使用数组。此信息在文档中。

    【讨论】:

    • 感谢@Evan 我通过参考 formItems.items 修复了
    猜你喜欢
    • 2021-03-28
    • 1970-01-01
    • 2023-04-02
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2014-03-13
    相关资源
    最近更新 更多