下面是我的表单定义,里面我想从json文件中为 items 属性赋值,其中包含有关fieldLabel,name,xtype等的信息,所以我有任何办法可以做到这一点?
Ext.define('com.myproject.view.myform', {
extend:'Ext.form.Panel',
alias: 'widget.myform',
xtype : 'myform',
autoShow : true,
width: 500,
height: 400,
title: 'Foo',
floating: true,
closable : true,
items: [{
fieldLabel: 'ID',
name: 'filterID',
xtype : 'textfield',
allowBlank: false
},{
fieldLabel: 'LABEL',
name: 'filterLabel',
xtype : 'textfield',
allowBlank: false
}] });
JSON文件
{"itemsConfiguration": [{
"fieldLabel": "ID",
"name": "filterID",
"xtype" : "textfield",
"allowBlank": false
},{
"fieldLabel": "LABEL",
"name": "filterLabel",
"xtype" : "textfield",
"allowBlank": "false"
}]}
答案 0 :(得分:1)
Ext.define('com.myproject.view.myform', {
extend:'Ext.form.Panel',
alias: 'widget.myform',
xtype : 'myform',
autoShow : true,
width: 500,
height: 400,
title: 'Foo',
floating: true,
closable : true,
initComponent:function() {
var me = this,
args = arguments;
Ext.Ajax.request({
// TODO fill url etc.
callback:function(response) {
Ext.apply(me,{
items:Ext.decode(response.responseText).itemsConfiguration
});
me.callParent(args);
}
});
},
});
答案 1 :(得分:1)
Ext.define('com.myproject.view.myform', {
extend:'Ext.form.Panel',
alias: 'widget.myform',
xtype : 'myform',
autoShow : true,
width: 500,
height: 400,
title: 'Foo',
floating: true,
closable : true,
initComponent:function() {
var me = this;
me.callParent(arguments);
Ext.Ajax.request({
url: 'path/to/endpoint',
callback:function(response) {
var obj = Ext.decode(response.responseText),
items = obj.itemsConfiguration;
Ext.suspendLayouts();
Ext.applyIf(me,{
items: items
});
me.updateLayout(); // Will calculate margins/paddings/etc.
Ext.resumeLayouts(true);
}
});
}
});