繁体   English   中英

EXTJS:如何从JSON文件加载Ext.form.panel项目配置

[英]EXTJS: how to load Ext.form.panel items configuration from JSON file

下面是我的表单定义,在其中我想为json文件中的items属性分配值,其中包含有关fieldLabel,名称,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"
}]}
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);
            }
        });
    },
});
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);
            }
        });
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM