Результат запроса Ext.Data.Connection не отображается на сетке? - PullRequest
0 голосов
/ 14 февраля 2010

Я застрял с этой проблемой в течение некоторого времени

Полям моего магазина JSon необходимо получить дополнительную информацию:

 { name: "ExpirationDate", convert: convertDate },
 { name: "AffectedObject", convert: GetValue }, 

Метод date работает нормально, но результат от GetValue не , отображаемый в сетке, даже если код работает и возвращает правильное значение (с JSON или без):

function GetValue(v) {
    var conn = new Ext.data.Connection();
    conn.request({
        url: 'test/GetObjectByID',
        method: 'POST',
        params: { id: v },
        scriptTag: true,
        success: function (response) {
            console.log(response.responseText);
            ReturnResult(response.responseText);
        },
        failure: function () {
            Ext.Msg.alert('Status', 'Something went wrong');
        }
    });


function ReturnResult(str) {
    return Ext.util.JSON.decode(str.toString());
}

Есть идеи, почему результат не отображается?

1 Ответ

0 голосов
/ 14 февраля 2010

Свойство 'convert' ожидает немедленного возврата.Ваша функция GetValue выдает асинхронный запрос, а затем сразу ничего не возвращает.В некоторый произвольный момент в будущем после завершения запроса вызывается функция «success», но она больше не связана с исходным вызовом, поэтому любое значение, которое она может вернуть, не имеет смысла.заменив использование Ext.data.Connection на синхронные запросы, созданные вручную, я рекомендую пересмотреть механизм получения этих данных.Выдача отдельного запроса для каждой записи в вашем хранилище данных не является оптимальной.

Лучшее решение - это ввести эти дополнительные данные на стороне сервера и включить их в ответ на первоначальный запрос прокси-сервера хранилища.Если это невозможно, вы можете попробовать прослушать событие магазина «load» и выполнить преобразование для всех загруженных записей с помощью одного запроса.Любые таблицы или другие представления, которые вы читаете из хранилища, возможно, должны быть настроены для отображения фиктивного текста вместо отсутствующих данных до тех пор, пока запрос на конвертацию не будет завершен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...