如何在extjs中为json数组建模型?

时间:2014-07-17 18:23:34

标签: javascript json extjs

我从服务器返回的数据如下:

["admin", "user", "developer", "super"]

我正在尝试将其映射到此模型中:

Ext.define('RoleModel', {
      extend: 'Ext.data.Model',
      //fields: [{}]
});

我的商店看起来像这样:

 Ext.create('Ext.data.Store', {
      model: 'RoleModel',
      proxy: {
          type: 'ajax',
          url : '/roles',
          reader: {
              type: 'json'
          }
      },
      autoLoad: true
  });

如何将我从服务器获取的单个数组映射到我的RoleModel

2 个答案:

答案 0 :(得分:2)

您已经知道了,在将 JSON 解析为您的数据模型之前,它需要采用以下形式:

[
    { "role": "admin"     },
    { "role": "user"      }, 
    { "role": "developer" }, 
    { "role": "super"     }
]

...但是如果您正在摇摆ExtJS 5.x ,则无需手动进行Ajax调用 - 您可以应用 <代理阅读器上的em> transform ,例如:

Ext.create('Ext.data.Store', {
    model: 'RoleModel', 
    proxy: {
        type: 'ajax',
        url : '/roles',
        reader: {
            type: 'json',
            transform: function(data) {
                return data.map(function(x){ 
                    return { role: x }; 
                });
            }
        }
    }
});

» Fiddle

答案 1 :(得分:1)

我最终在我的模型中添加了一个角色字段,并做了类似的事情:

Ext.Ajax.request({
  url: '/roles',
  success: function(response){
    var json = Ext.JSON.decode(response.responseText);
    var jsonObj = json.map(function(r){ return {role: r}});
    store.loadData(jsonObj);
  }
});