我正在尝试动态构建extjs表单,当我尝试将动态构建的MixedCollection对象添加到表单时,我得到 TypeError: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来添加displayfields组件数组。
但由于某种原因,执行store.load时没有触发商店监听器加载,是否有人发现问题?
没关系......我想通了......我放置了监听器而不是代理而不是商店。
Q2
同样奇怪的是,在store.load的回调方法中,记录不会返回加载的值。
没关系......我想通了......这是我经过的json对象。忘了将它从表单的错误/数据结构中删除。
由于
答案 0 :(得分:1)
MixedCollection不是add的可接受参数,您需要使用数组。此信息在文档中。