使用自定义JsonRest的网格不加载数据

时间:2015-04-09 12:56:12

标签: javascript json dojo dojo.gridx jsonreststore

我的网格(gridx / Grid)与自定义商店连接,扩展了dojo / store / JsonRest。

我的服务器调用成功,store.data将正确加载。

我的商店中有自定义query()方法(扩展了JsonRest)。而不是GET请求我在query()方法中使用POST请求。

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);

}

我在query()方法和我的自定义函数(在then方法中)中返回了dojo / store / util / QueryResults。所有工作正常。只有网格没有填充。

1 个答案:

答案 0 :(得分: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时,它会将 forEach 等所有IterativeMethod附加到 resolvedObject ,并将该对象返回到网格。

然后只有网格迭代结果对象。实际上网格

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