Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.10.2014, 15:24
Новичок на форуме
Отправить личное сообщение для Volha Посмотреть профиль Найти все сообщения от Volha
 
Регистрация: 27.10.2014
Сообщений: 2

Загрузка и обработка данных из 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:27.
Ответить с цитированием
  #2 (permalink)  
Старый 27.10.2014, 15:54
Новичок на форуме
Отправить личное сообщение для Volha Посмотреть профиль Найти все сообщения от Volha
 
Регистрация: 27.10.2014
Сообщений: 2

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

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


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

Последний раз редактировалось Volha, 27.10.2014 в 16:05.
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2014, 16:51
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отправка всех данных store на сервер shepard90 ExtJS 1 03.04.2013 23:52
Связать store и textfield'ы для отправки данных на сервер vladbrk ExtJS 6 16.10.2012 01:34
ComboBox - загрузка данных posta ExtJS 4 25.03.2012 21:01
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
загрузка данных из XML, почему загружает только в Explorer asked86 AJAX и COMET 2 18.12.2009 16:29