如何像数组形式远程存储extjs一样返回数据

Posted

技术标签:

【中文标题】如何像数组形式远程存储extjs一样返回数据【英文标题】:how to return the data like a array form remote store extjs 【发布时间】:2017-10-19 18:43:46 【问题描述】:

我有带有过滤器的网格,在过滤器上我想显示一个项目列表。通过关注过滤器选项,我应该看到带有复选框的项目列表,当我单击复选框时,它应该发送参数。我通过 加载本地数据,我想通过加载远程数据来实现它。 dataIndex: 'adjustmentTypeDescription', text: '调整类型', stateId: 'adjustmentgrid_adjustmentTypeDescription', 筛选: 类型:'列表', 标签字段:'名称', dataIndex: 'adjustmentTypeId',

        store: Ext.create('Ext.data.ArrayStore', 
            fields: [
                name: 'id',
                type: 'int'
            , 
                name: 'name',
                type: 'string'
            ],
            data: [
                [2, 'AA'],
                [13, 'AFF'],
                [11, 'DDD'],
                [15, 'Dd'],
                [5, 'Fdsdt'],
                [6, 'Ide']
                [10, 'Return/Reject']
            ]
        )

现在我想从服务中加载这些数据。 我试过这样:

            store: Ext.create('Ext.data.ArrayStore', 
            autoLoad: false,
            model: 'ModelName',
                        /*fields: [
                                name: 'adjustmentTypeId',
                                type: 'int'
                            , 
                                name: 'description',
                                type: 'string'
                            ],*/
                        proxy: 
                            type: 'ajax',
                            url: 'servicurl',
                            timeout:120000,
                            reader: 
                                type: 'array',
                               // rootProperty: 'data',
                                rootProperty:function(data)
                                    debugger;
                                    return data;
                                    debugger;
                                    //console.log(bb);
                                
                            
                        /*,
                        listeners: 
                            load: function(store, records, successful, 
                      operation, eOpts)
                                debugger;
                                var data = [];
                                for(var i = 0; i< 1; i++)

                   //data.push(records[i].data.description);
                                    var vare = new Array();
                                    vare[0]= records[i].data.description;
                                    data.push(vare);

                                

                                store.loadData(data);
                                console.log(data);
                            
                        */
            )

但没有工作我如何通过进行服务调用和加载远程数据来实现这一点。

【问题讨论】:

【参考方案1】:

    设置autoLoad: true

    删除 reader 配置对象。由于您使用的是 ArrayStore,因此不需要这样做。并且数组数据是有位置的,所以不使用rootProperty

    检查您是否正确定义了模型字段。

它应该可以工作。

【讨论】:

我的错误实际上存储不应该是 ArrayStore 因为来自服务器的数据是 json 格式: 我把它改成json阅读器并得到它fiddle.sencha.com/#view/editor&fiddle/28ko

以上是关于如何像数组形式远程存储extjs一样返回数据的主要内容,如果未能解决你的问题,请参考以下文章

如何将静态 JSON 从 PHP 返回到 extjs 存储

如何让 extjs 组合框像普通的 html 选择框一样工作?

如何在返回数据的同一行初始化一个新的 int 数组? [复制]

extjs5 grid如何实现根据后台返回的数据 合并相应的单元格或是行数

如何配置 extjs 阅读器来读取这个 json?

Extjs formaction加载远程数据