Сложные вложенные циклы json для хранения с помощью extjs

Я использую geojson, извлеченный из naturalearthdata, который выглядит так: введите здесь описание изображения

Все, что я хочу, это поймать ИМЯ каждой функции, чтобы отобразить их в сетке (сетка живого поиска. Кстати, эффективно ли это для 2000 имен?) Но я не могу получить доступ ко всем именам с корневым свойством. Я попытался зациклиться на всех функциях

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
            }
        }
    }
});

Но отладчик прислал мне этот результат, который я не понимаю: введите здесь описание изображения

Особенно, когда массив выглядит хорошо: введите здесь описание изображения

Каков хороший способ поймать только ИМЯ? Должен ли возврат выглядеть в формате json?


person So4ne    schedule 27.10.2015    source источник
comment
Я думаю, вам нужно вернуть массив правильных записей myApp.model.PlacesModel, а не просто массив строк в transform. В документах говорится, что он должен возвращать объект данных docs.sencha.com/extjs/6.0/6.0.1-modern/#!/api/   -  person Francis Ducharme    schedule 27.10.2015
comment
вы, вероятно, можете просто сказать, что rootProperty это features. Затем в полях модели добавьте поле с mapping свойство, например, mapping: 'properties.NAME'   -  person weeksdev    schedule 27.10.2015
comment
@weeksdev Это работает, большое спасибо! Если вы хотите опубликовать это как ответ, я закрою вопрос, если нет, я удалю вопрос сегодня вечером.   -  person So4ne    schedule 28.10.2015
comment
@ So4ne Я разместил это как ответ, я думаю, что этот вопрос было бы хорошо сохранить.   -  person weeksdev    schedule 28.10.2015


Ответы (1)


Вы можете использовать атрибут mapping в массиве fields в определении вашей модели, чтобы сопоставить правильный атрибут в json с полем.

Вы устанавливаете rootProperty на features для reader.

Затем в вашем массиве fields что-то похожее на это

fields: [
    { name: 'myCustomField', mapping: 'properties.NAME' }
]
person weeksdev    schedule 28.10.2015