Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Загрузка и обработка данных из Store (https://javascript.ru/forum/extjs/51174-zagruzka-i-obrabotka-dannykh-iz-store.html)

Volha 27.10.2014 15:24

Загрузка и обработка данных из Store
 
Добрый день!
Попробую описать, возникшую проблему..

Есть хранилище данных:
var storeRequestPie = Ext.create('Ext.data.Store', {
        autoLoad: true,
        model: 'RequestPie',
        proxy: {
            type: 'ajax',
            url: getUrl(),
            reader: {
                type: 'json',
                root: 'requestStatus'
            }
        }
    });
    storeRequestPie.load();



Есть некий обработчик события:
function chooseDate(dateFrom, dateTo) {
        storeRequestPie.getProxy().url = getUrl(dateFrom, dateTo);
        storeRequestPie.load();
        
/*здесь мне нужно обработать данные, которые загрузились в storeRequestPie
*/
        if (storeRequestPie.count() == 1){
             ...
        } else if (storeRequestPie.count() == 0){
             ...
        } else {
            ...
        }


Но, к сожалению, в оператор условия попадают данные из предыдущего обновления storeRequestPie. Хотя на форму все грузится верно.

Как обработать данные перед загрузкой на форму?
Уточню: мне нужно в зависимости от результата вывести данные на странице через диаграмму или через обычный текст (динамически добавляю item к Panel)

Volha 27.10.2014 15:54

В общем, если кому интересно, я нашла работоспособное решение:

storeRequestPie.load({
            callback: function (records, operation, success) {
                if (success == true) {
                    console.log("size: " + this.getCount());

                    if (this.getCount() == 1) {
                       ...
                    } else if (this.getCount() == 0) {
                       ...
                    } else {
                       ...
                    }
                }
            }
        });


И все-таки не очень поняла принцип работы стора.. Почему только таким образом можно обработать данные?

Infarch 27.10.2014 16:51

Потому что загрузка стора через аякс прокси - асинхронная. И начнется она в лучшем случае тогда, когда завершится метод вызвавший load().


Часовой пояс GMT +3, время: 04:41.