我没有在read API中看到任何提供访问权限的内容: http://api.dojotoolkit.org/jsdoc/1.3.2/dojo.data.api.Read
答案 0 :(得分:8)
dojocampus的一个例子展示了一种方式。这里没有fetch
参数的query
会返回商店中的所有商品。
var store = new some.Datastore();
var gotItems = function(items, request){
console.log("Number of items located: " + items.length);
};
store.fetch({onComplete: gotItems});
答案 1 :(得分:2)
dojo.data.api.Read的onBegin函数具有匹配的总大小:
function size(size, request){
// Do whatever with the size var.
}
store.fetch({query: {}, onBegin: size, start: 0, count: 0});
答案 2 :(得分:1)
任何数据存储的有线数据格式都是特定于商店的。为了获得总项数(和其他元数据),必须将其作为响应的一部分返回。这是进行服务器端分页的唯一方法。
我实施的所有商店都希望数据包含totalCount
属性,如下所示:
{
identifier: 'id',
items: [
{ id: 123, name: 'aaa', ... },
{ id: 456, name: 'bbb', ... },
...
],
totalCount: 525
}
商店在查询返回时保存此信息(在onComplete
中)。然后通过商店上的getTotalCount()
方法公开该值。
当与start
和count
请求选项一起使用时,这可以让您拥有更好的ajax分页(“显示1-50 of 525”)。
由于这不是API的一部分,因此read API的核心实现不会实现它。这种技术的一种形式(类似于我所做的)似乎确实由dojo.data.QueryReadStore
实现,所以你也可以在那里查看。
答案 3 :(得分:0)
我正在使用JsonRest商店寻找这个问题的答案,这似乎就是这样:
在你的服务器上,你应该看看 在请求中的Range标头处,以了解要返回的项目。该 服务器应该使用Content-Range标头响应以指示多少 正在退回物品以及存在多少物品:
Content-Range: items 0-24/66
来自:http://dojotoolkit.org/reference-guide/dojo/store/JsonRest.html
答案 4 :(得分:0)
以下代码对我有用
// questionStoreReader is a pointer that points to and can read ask.json file
var questionStoreReader=new dojo.data.ItemFileReadStore({url:"ask.json"});
questionStoreReader.fetch(
{
onComplete:function(items,request) // items is an array
{
alert(items.length);// number of items in ask.json
},
})