Как обновить строку состояния Extjs с результатами JSON? - PullRequest
3 голосов
/ 17 ноября 2009

Я сталкиваюсь с некоторыми трудностями при получении моего индикатора выполнения для извлечения его прогресса из результатов Json и обновления индикатора выполнения на основе проверки таймера каждые 10 секунд.

Я могу создать результат в формате json следующим образом:

{"success":true, "progress":0.2}

Полагаю, что основная идея заключается в том, что мне нужна задача с интервалом 10 секунд, с бегуном для выполнения задачи, и когда индикатор выполнения начинает работать, бегун проверит результаты из Json, и обновите индикатор выполнения в соответствии с требованиями.

Код до сих пор:

var task = {
    run: function(){
        // what to add here?
    },
        interval: 10000
    }
}

Сказав это, я испытываю трудности с:

  1. Как добавить часть Json в задачу?
  2. Как обновить индикатор выполнения с заданным результатом Json?

Большое спасибо.

Ответы [ 2 ]

5 голосов
/ 17 ноября 2009

Мне удалось это запустить и запустить, по-видимому, это недостающая головоломка на мой вопрос. Для тех, кто застрял с этим, как я.

В основном просто добавьте эту часть, которая будет извлекать результат json из указанного вами URL-адреса, и в случае успеха обновите индикатор выполнения.

И минимальный код, который будет встроен в вашу задачу:

Ext.Ajax.request({
           url: 'getStatus',
           success: function(r) {
                 var i = Ext.decode(r.responseText).progress;
                 progressbar.updateProgress(count +' completed');
           }
});
0 голосов
/ 17 ноября 2009

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


Как добавить часть Json в задачу?

Если у вас есть доступ к memcached или чему-то в этом роде, вы можете использовать его для хранения хода выполнения задачи. Таким же образом вы можете использовать базу данных или даже файл, поскольку вы хотите сохранить только число.

После того, как дать число выполнения различных заданий, которые вы не знаете, сколько времени это займет. Я бы сказал, если ваша обработка основана на цикле, как вы обновляете n строк, вы можете просто использовать это в качестве индикатора.

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


Как обновить индикатор выполнения с заданным результатом Json?

ExtJS имеет TaskManager , который позволит вам выполнять ajax-запрос каждую n секунду, извлекать прогресс и обновлять прикрепленную индикатор выполнения.

// Start a simple clock task that updates a div once per second
var task = {
    run: function(){
        Ext.fly('clock').update(new Date().format('g:i:s A'));
    },
    interval: 1000 //1 second
}
Ext.TaskMgr.start(task);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...