2015-05-28 5 views
-1

У меня есть карта java. Я преобразовал его в JSON строку, и я получаю что-то вроде этого:Ошибка extjs при заполнении магазина

{"NEW ZEALAND":"111111111111111","CHAD":"1","MOROCCO":"111","LATVIA":"11"} 

Теперь я хочу, чтобы использовать его в магазине, а затем диаграмму, как следующий код, но он не работает. У меня нет ошибки, просто нет отображения.

var obj = Ext.Ajax.request({ 
    url: App.rootPath + '/controller/home/dashboard/test.json', 
    method:'GET', 
    success: function(response) {   
    return Ext.JSON.decode(response.responseText); 
    } 
}); 

var store2 = Ext.create('Ext.data.Store', { 
    model: 'PopulationPoint', 
    data: obj 
}); 

Ext.create('Ext.chart.Chart', { 
    renderTo: 'infos2', 
    width: 500, 
    height: 300, 
    store: store2, 
    series: [ 
    { 
     type: 'pie', 
     field: 'population', 
     label: { 
     field: 'state', 
     display: 'rotate', 
     font: '12px Arial' 
     } 
    } 
    ] 
}); 

enter image description here

ответ

1

Запрос АЯКС является асинхронным. Таким образом, переменная obj, используемая для инициализации ваших данных, еще не содержит ваших данных.

Один из вариантов - создать переменную store2 и создать диаграмму непосредственно в обратном вызове запроса AJAX.

Более чистым вариантом будет настройка хранилища с прокси-сервером для загрузки URL-адреса, а в обратном вызове - создание диаграммы.

EDIT

JSON ответ не содержит поля, которые заявлены в модели (пересылаются в комментариях). Обновите JSON, чтобы вернуть правильно отформатированную модель, и график должен работать, как показано в this fiddle. JSON должен выглядеть как

[ 
    { 
     "state" : "New Zealand", 
     "population" : 111111111 
    }, 
    { 
     "state" : "Chad", 
     "population" : 1 
    } 
] 
+0

Я попробовал первое решение, но тот же вопрос, и когда я пытаюсь отобразить содержимое магазина с store2.each (функция (запись) { \t console.log (запись) ; \t}); результат, похоже, в порядке нет? (см. мой отредактированный пост) –

+0

Можете ли вы опубликовать свою модель точки популяции? Мне любопытно посмотреть, как модель объявляет поле и читателя. – cpastore84

+0

Ext.define ('PopulationPoint', { extend: 'Ext.data.Model', поля: ['state', 'population'] }); –

Смежные вопросы