extjs - 分机号 : FormPanel not populating fields with JSON data

标签 extjs

我有一个包含 3 个字段和一个 JsonReader 的 FormPanel。这是设置:

  var goalPanel = new Ext.FormPanel({
        reader: new Ext.data.JsonReader({
            idProperty: 'id',          
            root: 'items',             
            fields: [
                {name: 'referenceSales', type:'float'},
                {name: 'increasePercentage', type: 'float'},
                {name: 'salesGoal', type: 'float'}
            ]
        }), 
        labelAlign: 'top',
        frame:true,
        bodyStyle:'padding:5px 5px 0',
        items: [{
            layout:'column',
            items:[{
                columnWidth:.33,
                layout: 'form',
                items: [{
                    fieldLabel: 'Reference Sales',
                    xtype: 'numberfield',
                    name: 'referenceSales',
                    readOnly: true,
                    disabled: true,
                    anchor:'95%'
                }]
            },{
                columnWidth:.33,
                layout: 'form',
                items: [{
                    fieldLabel: 'Increase %',
                    name: 'increasePercentage',
                    xtype: 'numberfield',
                    anchor:'95%',
                    decimalPrecision: 2,

                    }
            }]},{
                columnWidth:.34,
                layout: 'form',
                items: [{
                    fieldLabel: 'Sales Goal',
                    name: 'salesGoal',
                    xtype: 'numberfield',                   
                    anchor:'95%',
                    decimalPrecision: '2',

                }]
            }]
        }],

        buttons: [{
            text: 'Recalculate'
        }]
    });

这是我加载数据的方式:

goalPanel.getForm().load({url:'goal/getAnnualSalesGoal', method:'GET',params:myParams} );

这是在 Firebug 中看到的 JSON 响应:

{"items":[{"referenceSales":700000,"salesGoal":749000,"increasePercentage":0.07}]}

我没有收到任何错误,加载后表单字段肯定是空的。我该如何解决这个问题,或者开始调试它?

最佳答案

如果您查看 Ext.form.BasicForm 的文档,它说 BasicForm 内置了 JSON 支持,因此您不需要使用 JsonReader 将数据加载到表单中。不过这应该不会有什么坏处。

我认为主要问题可能是对 BasicForm 的加载调用需要这样的 JSON 响应:

{
    "success": true,
    "data": {
        "referenceSales": 700000,
        "salesGoal": 749000,
        "increasePercentage": 0.07
    }
}

但是你的在数组中。

(来自Ext.form.BasicForm.load docs)

附带说明一下,如果您使用的是 Ext 3.0,hbox 布局比 columns 更容易处理。

关于extjs - 分机号 : FormPanel not populating fields with JSON data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1351424/

相关文章:

javascript - ExtJS 5.0 - 添加按钮作为组件的覆盖

javascript - Extjs,如何将按钮渲染到模板

extjs - 通过 id 或 itemId 获取 TabPanel 的 Tab

html - 如何根据需要在 extjs 面板中定位图像。?

javascript - EXT.JS 4.0.5 中的网格滚动问题,不考虑工具栏高度

javascript - ExtJS TreePanel - 刷新并保持节点状态

javascript - 如何在数字字段中只允许 2 位小数

extjs - 如何在Ext Js中显示子菜单?

cordova - Sencha Cmd 无法从 sencha.cfg 中找到 'app.dir' 配置属性

javascript - 过滤与值不匹配的存储记录