是否有一种方法可以将JsonRestStore配置为使用现有的web服务,该服务在JSON响应的根级返回对象数组,即而不是?
我的JSON响应当前类似于以下内容:
{
message: "",
success: true,
data: [
{ name: "Bugs Bunny", id: 1 },
{ name: "Daffy Duck", id: 2 }
],
total: 2
}我需要告诉JsonRestStore,它将在"data“下找到行,但是我无法通过查看文档找到这样的方法。模式似乎是一种可能性,但我无法通过文档(或者我在Google中找到的)来理解它。
我的web服务以Ext中存储的格式返回数据,但我现在不能重构价值多年的web服务(通过HTTP头而不是查询字符串值处理分页可能也很有趣,但这是另一天的问题)。
谢谢。
发布于 2015-03-27 04:01:10
虽然它在API文档中很少被调用,但是在dojox/data/JsonRestStore中有一个名为_processResults的内部方法,它恰好可以用于此目的。它接收服务返回的数据和从请求中推断出来的原始数据,并期望返回包含items和totalCount的对象。
根据你上面的数据,像这样的东西应该能起作用:
var CustomRestStore = declare(JsonRestStore, {
_processResults: function (results) {
return {
items: results.data,
totalCount: results.total
};
}
});发布于 2015-01-07 12:02:52
dojo/store的思想是提供参考存储,但它们是为了定制以匹配您想要的任何数据格式。例如,https://github.com/sitepen/dojo-smore有一些额外的存储(例如,处理Csv数据的存储)。这些存储为如何处理在不同结构下提供的数据提供了很好的示例。
还有一个新的dstore项目,http://dstorejs.io/,它将最终取代Dojo 2中的dojo/store,但今天对Dojo1.x起作用。这对于创建与数据结构相匹配的自定义存储可能更容易。
https://stackoverflow.com/questions/27789533
复制相似问题