我的网格(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。所有工作正常。只有网格没有填充。
答案 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##))