Сетка с пользовательским JsonRest не загружает данные

У меня есть сетка (gridx / Grid), связанная с моим пользовательским магазином, который расширяет dojo / store / JsonRest.

Мой вызов сервера завершается успешно, и store.data загружается правильно.

У меня есть собственный метод query () в моем магазине (расширяет JsonRest). Вместо запроса GET я использую запрос POST в методе query ().

query: function(){
//....custom config.......
 var xhrArgs = {
              url: this.url,
              postData: postData,
              handleAs: "json",
              headers: {'Accept':'application/json','Content-Type':'application/json'},
              load: function(data)
              {
            // ....data customization....
                store.data = customizedData;

              },
              error: function(error)
              {
            console.log(error);
              }
        }
var results =  dojo.xhrPost(xhrArgs);

results.then(function(response){

// ....data customization....
    store.data = customizedData;
return customizedData;
});
return QueryResults(results);

}

Я вернул dojo / store / util / QueryResults в метод query () и свою пользовательскую функцию (в then методе). Все работают нормально. Единственное, что сетка не заполнена.


person saravanakumar    schedule 09.04.2015    source источник


Ответы (1)


Да, нашел !!!

Отложенный виноват !!

Мы должны возвращать настроенные данные в QueryResults, а не в объект xhr.

Итак, мой метод запроса должен быть таким

query: function(){
    //....custom config.......
     var xhrArgs = {
          url: this.url,
          postData: postData,
          handleAs: "json",
          headers: {'Accept':'application/json','Content-Type':'application/json'},
          load: function(data)
          {
        // ....data customization....
            store.data = customizedData;

          },
          error: function(error)
          {
        console.log(error);
          }
            }
    var results =  dojo.xhrPost(xhrArgs);


//********************************** THIS IS RIGHT WAY ***************
    var resolvedObject = results.then(function(response){

    // ....data customization....
        store.data = customizedData;
    return customizedData;
    });
    return QueryResults(resolvedObject);
}

Когда мы передаем разрешенный объект в QueryResults, он добавляет все IterativeMethods, такие как forEach, с помощью resolvedObject и возвращает этот объект в сетку.

Затем только сетка выполняет итерацию объекта результата.

store.query().forEach(##ADD ITEMS TO GRID##))
person saravanakumar    schedule 09.04.2015