【问题标题】:Complicated nested json loops to store with extjs使用 extjs 存储复杂的嵌套 json 循环
【发布时间】:2016-01-27 05:07:37
【问题描述】:

我正在使用从 naturalearthdata 中提取的 geojson,如下所示:

我想要的只是捕捉每个特征的名称,以便在网格中显示它们(实时搜索网格..顺便说一句,它对 2000 个名称有效吗?) 但我无法使用 root 属性访问所有名称。我尝试循环使用所有功能

Ext.define('myApp.store.Places', {
    extend: 'Ext.data.Store',
    alias: 'store.places',
    requires : ['myApp.model.PlacesModel',
                'myApp.view.main.MainModel'],
    id: 'Places',
    model: 'myApp.model.PlacesModel',
    autoLoad: true,
    proxy: {
        type: 'ajax',
        url : '/resources/data/coord.json',
        reader: {
            type: 'json',
            transform: {
                fn: function(data) {
                    for(var i = 0; i < data.features.length -1; i++){
                        names_places.push(data.features[i].properties.NAME);
                    }
                    debugger;
                    return names_places;
                },
                scope: this
            }
        }
    }
});

但调试器向我发送了我不明白的结果:

特别是当数组看起来不错时:

仅捕获 NAME 的好方法是什么?返回是否必须查看 json?

【问题讨论】:

  • 我认为您需要返回一个正确的myApp.model.PlacesModel 记录数组,而不仅仅是transform 中的一个字符串数组。文档说它应该返回一个数据对象docs.sencha.com/extjs/6.0/6.0.1-modern/#!/api/…
  • 您可能只说rootPropertyfeatures。然后,在模型字段中添加一个带有mapping property 的字段,例如mapping: 'properties.NAME'
  • @weeksdev 非常感谢您!如果您想将其发布为答案,我将关闭该问题,否则我今晚删除该问题
  • @So4ne 我将其发布为答案,我认为这个问题最好保留。

标签: json extjs store extjs6


【解决方案1】:

您可以在模型定义中使用fields 数组上的mapping 属性将json 中的正确属性映射到字段。

您将rootProperty 设置为featuresreader

然后在您的 fields 数组中类似于此

fields: [
    { name: 'myCustomField', mapping: 'properties.NAME' }
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    相关资源
    最近更新 更多