Erreur lors de l'ajout de composant mixteCollection au formulaire ExtJS
-
12-12-2019 - |
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.
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
La solution
MixCollection n'est pas un paramètre accepté pour ajouter, vous devez utiliser un tableau.Cette information est dans les docs.