ExtJS 4.2 - 如何将数组映射到模型字段并在网格列上动态显示?

时间:2017-01-31 06:19:57

标签: javascript extjs

我有这个json数据:



{
  id: 1,
  name: 'something',
  description: 'somethingsomething',
  customers: [{
    id: 1,
    username: 'cust1'
  }, {
    id: 2,
    username: 'cust2'
  }]
}




虽然我在gridpanel上显示前三个字段没有问题,但是我在检索customers字段的数组对象时遇到了问题。我的模型是这样的:



fields: [
  'id', {
    name: 'name',
    sortType: Ext.data.SortTypes.asUCString
  },
  'permanent', {
    name: 'description',
    Type: Ext.data.SortTypes.asUCString
  }, {
    name: 'customers',
    Type: Ext.data.SortTypes.asUCString
  }, {
    name: 'username',
    Type: Ext.data.SortTypes.asUCString,
    mapping: 'customers[0].username'
  }
]




当我尝试访问customers[0].username时,它只检索指定索引上的那些。删除索引号会返回undefined,因为我认为它正在查找要返回的索引。如何正确检索所有customers: []并将其显示在我的网格中,其格式为:



{
  xtype: 'gridpanel',
  store: oStore,
  viewConfig: {
    loadMask: false,
    enableTextSelection: true
  },
  hideHeaders: false,
  bodyBorder: true,
  columns: [{
    text: 'Customer',
    dataIndex: 'username',
    flex: 1
  }, {
    header: '',
    xtype: 'actioncolumn',
    itemId: 'remove-player-btn',
    width: 50,
    sortable: false,
    resizable: false,
    menuDisabled: true,
    items: [{
      icon: 'resources/img/x.png',
      tooltip: 'Remove Player',
      scope: oMe
    }],
    editor: {
      xtype: 'text',
      name: 'deleteRow'
    }
  }]
}




1 个答案:

答案 0 :(得分:1)

您可以使用模型中可用的转换功能。此转换功能用于某些计算目的&根据我们的需求制作地图响应数据。例如,我会将用户名映射如下:

fields: [
{
  name:'username',
  convert:function(value,model)
  {
    return model.data.customers.username;
  }
}
]

id 字段使用相同的技巧。如果有任何问题,请回复。