Javascript 带有自定义JsonRest的网格未加载数据

Javascript 带有自定义JsonRest的网格未加载数据,javascript,json,dojo,dojo.gridx,jsonreststore,Javascript,Json,Dojo,Dojo.gridx,Jsonreststore,我将grid(gridx/grid)连接到扩展dojo/store/JsonRest的自定义存储 我的服务器调用成功,store.data将正确加载 我的存储中有我的自定义query()方法(扩展了JsonRest)。我在query()方法中使用POST-request,而不是GET-request 我已经在query()方法和我的自定义函数(在then方法中)中返回了dojo/store/util/QueryResults。所有这些都可以正常工作。唯一的问题是网格没有填充。是的,找到了 Def

我将grid(gridx/grid)连接到扩展dojo/store/JsonRest的自定义存储

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

我的存储中有我的自定义query()方法(扩展了JsonRest)。我在query()方法中使用POST-request,而不是GET-request

我已经在query()方法和我的自定义函数(在then方法中)中返回了dojo/store/util/QueryResults。所有这些都可以正常工作。唯一的问题是网格没有填充。

是的,找到了

Deffered是罪魁祸首

我们应该将定制数据返回到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)附加到resolvedObject,并将该对象返回到网格

然后只有网格迭代结果对象。实际上网格是这样做的

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