【问题标题】:Extjs 4.1 - How to load array to formpanelExtjs 4.1 - 如何将数组加载到窗体
【发布时间】:2013-10-04 02:22:36
【问题描述】:

我有一个窗口,里面有类似的项目

items:{
        xtype:'form',
        items: [{
            xtype: 'numberfield',
            fieldLabel: '1',
            name: 'va[]'
        },{
            xtype: 'textfield',
            fieldLabel: '2',
            name: 'va[]'
        },{
            xtype: 'textfield',
            fieldLabel: '3',
            name: 'va[]'
        }]
    },

我使用加载表单将数据从服务器获取到我的表单

    var form = win.down('form').getForm();
    form.load({         
        url: 'load.php',
        success:function(form, action){
            win.show();         
        }
    });

我的 json 看起来像

{"success":true,"data":{"va":["1","2","3"]}}

但加载成功后我的表单为空白(未设置值)

谢谢

【问题讨论】:

  • 您将需要修改您的 json 并为字段提供不同的名称,请参阅this answer
  • @NandkumarTekale b/c 表单中的项目是动态的,如果我使用明确的名称,那么这很难管理:|。

标签: extjs extjs4.1


【解决方案1】:

虽然action 您可以访问response。然后,您可以获取数据并手动分配。您可能需要一个唯一的itemId,因为您的所有字段都具有相同的名称。比如:

form.load({
  url: 'load.php',
  success: function(form, action) {
    var me = this,
        data, i;
    try {
      data = Ext.decode(action.response.responseText);
      console.log(data); //outputs data.success, data.data.va in your console.
      if(data.data && Ext.isArray(data.data.va)) {
        for(i = 0; i < data.va.length; i++) {
          //here do your logic to populate the fields...
        } 
      }
    }catch(e){}
  }
});

【讨论】:

    猜你喜欢
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    相关资源
    最近更新 更多