我现在有了这段代码:
define([
"dojo/_base/declare",
"dojox/data/JsonRestStore",
"dojox/grid/LazyTreeGrid",
"dojox/grid/LazyTreeGridStoreModel"
], function(
declare,
JsonRestStore,
LazyTreeGrid,
LazyTreeGridStoreModel
) {
var layout = { ... },
store = new JsonRestStore({
target: "/api/items" // for example
limitParam: "limit",
offsetParam: "offset"
}),
model = new LazyTreeGridStoreModel({
serverStore: true,
store: store,
childrenAttrs: [ "children" ]
});
return declare("CustomTreeGrid", [ LazyTreeGrid ], {
treeModel: model,
structure: layout
});
});
我的小部件在启动后向目标URL发送了数千个请求并冻结了我的浏览器。如何修复错误的行为并保存与RESTful API的兼容性?
使用QueryReadStore工作的解决方案,但不是在我的情况下 - Django REST Framework在GET请求上返回带有API声明的页面。
服务器以JSON格式返回数据:
{
"items": [ ] //Array of items
"identifier": "id",
"numRows": 12 // Total count of items
}
另外,我更改了返回数组的服务器响应。响应标头还包含关键字“Content-Range:0-2 / 3”(例如),它对我不起作用。
服务器响应标头:
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Range: items 0-1/2
Content-Type: application/json
Vary: accept
服务器响应正文:
[
{
"id": 1,
"children": false,
"name": "name1"
},
{
"id": 2,
"children": false,
"name": "name2"
}
]
答案 0 :(得分:2)
很难从中创建一个jsfiddle,因为你也需要服务器部分。
我找到了这个实现:https://github.com/jeremyg484/dojo-json-rest-store
它使用以下组合:dojo.store.Cache
,dojo.store.JsonRest
,dojo.store.Memory
和dojo.data.ObjectStore
也许你可以用它做点什么...... 看看它是如何使用的:
myStore = dojo.store.Cache(dojo.store.JsonRest({target:"usstates/"}), dojo.store.Memory());
grid = new dojox.grid.DataGrid({store: dataStore = dojo.data.ObjectStore({objectStore: myStore})