带有自定义 JsonRest 的网格不加载数据
Posted
技术标签:
【中文标题】带有自定义 JsonRest 的网格不加载数据【英文标题】:Grid with custom JsonRest not loading data 【发布时间】:2015-04-09 12:56:12 【问题描述】:我有 grid(gridx/Grid) 与扩展 dojo/store/JsonRest 的自定义存储连接。
我的服务器调用成功,store.data 将正确加载。
我的商店中有我的自定义 query() 方法(扩展 JsonRest)。我在 query() 方法中使用 POST 请求而不是 GET 请求。
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】:是的,找到了!!!
延迟是罪魁祸首!!
我们应该将自定义数据返回给 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 并将该对象返回给网格。
那么只有 grid 会迭代结果对象。实际上 grid 会这样做
store.query().forEach(##ADD ITEMS TO GRID##))
【讨论】:
以上是关于带有自定义 JsonRest 的网格不加载数据的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Composer 自定义网格模板上显示自定义字段图像