2015-04-09 6 views
0

У меня есть сетка (gridx/Grid), связанная с моим обычным магазином, который расширяет dojo/store/JsonRest.Сетка с пользовательским 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); 

} 

Я вернулся додзё/магазин/Util/QueryResults в запросе() и моя пользовательская функция (в то метод) .Все работает отлично. Единственное, что не заполнено сетью.

ответ

0

Да, нахожу его !!!

Деффед является виновником!

Мы должны возвращать настроенные данные объекту 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 и возвращают этот объект в сетку.

Тогда только сетка итерации результата object.Actually сетка делает

store.query().forEach(##ADD ITEMS TO GRID##))