Ext JS:Combo中的元素不可见,但已加载

时间:2018-02-21 11:20:49

标签: ajax extjs combobox extjs6.2

使用Ext JS 6.2.x.组合已创建。它使用ajax代理请求:

Request .../rest/maps/tree?_dc=1519213286176&page=1&start=0&limit=25
Request Method:GET
Status Code:200 OK
Accept:*/*
Accept-Encoding:gzip, deflate, br

回复标题:

Cache-Control:no-cache, no-store, must-revalidate
Connection:keep-alive
Content-Type:application/json

在回复正文中,会返回一组年份:

["2015","2017","2018","2019","2016","2020"]

这是一段代码:

Ext.define('MapsYears', {
    // extend: 'Ext.data.ArrayStore',
    extend: 'Ext.data.Store',
    alias: 'store.maps-years',
    autoLoad: true,
    fields: ['year'],
    proxy: {
        type: 'ajax',
        url: 'rest/maps/tree'
    }
});

Ext.define('Main.panel.SnapshotNow', {
    xtype: 'snapshotNow',
    extend: 'Ext.panel.Panel',
    requires: [
    ],
    items: [{
        id: 'SnapshotNow',
        xtype: "combobox",
        store: {
            type: 'maps-years'
        },
        displayField: 'year',
        valueField: 'year'
    }]
});

项目已加载,我甚至可以点击组合,项目显示为已选择,但项目列表不可见:

combo with not visible elements

我想念什么?

UPDATE:在回复中,它实际上不是json格式。我可以通过更改休息服务并返回正确的json来解决此问题。问题是,有没有办法让ExtJS正确处理原始示例中的元素列表,如下所示:

 ["2015","2017","2018","2019","2016","2020"]

1 个答案:

答案 0 :(得分:1)

这应该可以修复您的数据结构

Ext.define('MapsYears', {
    extend: 'Ext.data.Store',
    alias: 'store.maps-years',
    autoLoad: true,
    fields: ['year'],
    proxy: {
        type: 'ajax',
        url: 'rest/maps/tree',
        reader: {
            type: 'json',
            transform: data => data.map(year => ({year}))
        }
    }
});