Как я могу генерировать динамические поля формы? В настоящее время данные загружаются из файла JSON через viewModel. Затем он связывается с некоторыми полями данных панели, такими как мой пример и текущее состояние ниже:
Configuration.json -> будет расширен с большим количеством записей
{
"configuration": [
{
"name": "firstargument",
"value": "123",
"type": "string"
} //I would like to extend that file later with more different data fields and data types
]
}
ViewModel: Configuration.js -> здесь нужно как-то загрузить несколько записей
Ext.define('QuickApp.model.Configuration', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.configuration',
data: {
name: '', //here I need a data set with multiple entries
value: ''
},
constructor: function(config) {
var vm = this;
this.callParent(arguments);
vm.setStores({
info: {
fields: ['name','value'],
proxy: {
type: 'ajax',
url: 'app/Configuration.json',
reader: {
tyoe: 'json',
rootProperty: 'configuration'
}
},
autoLoad: true,
listeners: { //Or maybe some for each magic here? I don't know the syntax...
load: function(store, records) {
vm.set('name', store.getAt(0).get('name'));
vm.set('value', store.getAt(0).get('value'));
}
}
}
});
}
});
Configurationplugin.js -> Как создать здесь несколько динамических / универсальных дочерних элементов?
Ext.define('QuickApp.view.configurationplugin.Configurationplugin',{
extend: 'Ext.form.Panel',
alias: 'widget.configurationplugin',
title: 'Configuration Plugin',
modal: true,
draggable: true,
floating: true,
bodyPadding: 10,
width: 300,
centered: true,
viewModel: {
type: 'configuration'
},
items: [{
xtype: 'textfield', //and how can I add multiple childs then here depending on the given types?
name: 'firstargument',
bind:{
label: '{name}',
value: '{value}',
},
}, {
xtype: 'toolbar',
docked: 'bottom',
items: ['->', {
xtype: 'button',
text: 'Submit',
iconCls: 'x-fa fa-check',
handler: function() {
this.up('configurationplugin').destroy();
}
}, {
xtype: 'button',
text: 'Cancel',
iconCls: 'x-fa fa-close',
handler: function() {
this.up('configurationplugin').destroy();
}
}],
}],
});
Я знаю, это много кода. Но я был бы благодарен за любые подсказки! Текущий код работает нормально, только с одними данными. Большое спасибо!