Я пытаюсь динамически построить форму extjs, и когда я пытаюсь добавить динамически построенный объект MixedCollection в форму, я получаю ТипError: e.mixins.elementCt не определено Ошибка.Ошибка добавления компонента MixedCollection в форму extjs
<div id="[email protected]" 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('[email protected]');
}
});
</script>
Другое дело, что я не понимаю, когда я помещаю функцию внутри слушателя загрузки, ничего не происходит. Поэтому мне пришлось прибегнуть к использованию события обратного вызова.
Обновление: form.add метод принимает массив компонентов или компонентов, так что вместо добавления типа MixedCollection Я имею в formItems.items, чтобы добавить массив displayfields компонентов.
Но по какой-то причине загрузка загрузчика магазина не запускается, когда выполняется store.load, может ли кто-нибудь увидеть проблему с этим?
Никогда не думайте об этом ... Я понял ... Я поставил слушателя вместо прокси вместо магазина.
Q2
также что-то странное в том, что во время выполнения метода обратного вызова store.load, записи не возвращаются с загруженными значениями.
Не обращайте внимания на это ... Я понял ... Это был объект json, который я передал. Забыл взять его из структуры ошибок/данных для формы.
Благодаря
Спасибо @Evan Я исправил, ссылаясь на formItems.items –