如何获取dojo数据存储的项目计数(大小)?
我在read API中看不到任何可以访问以下内容的内容: 上的一个示例演示了一种方法。这里有一个如何获取dojo数据存储的项目计数(大小)?,dojo,Dojo,我在read API中看不到任何可以访问以下内容的内容: 上的一个示例演示了一种方法。这里有一个fetchwithoutquery参数返回存储中的所有项目 var store = new some.Datastore(); var gotItems = function(items, request){ console.log("Number of items located: " + items.length); }; store.fetch({onComplete: gotItems})
fetch
withoutquery
参数返回存储中的所有项目
var store = new some.Datastore();
var gotItems = function(items, request){
console.log("Number of items located: " + items.length);
};
store.fetch({onComplete: gotItems});
任何数据存储的导线数据格式都是完全特定于存储的。为了获得项目总数(和其他元数据),必须将其作为响应的一部分返回。这是执行服务器端分页的唯一方法 我实现的所有存储都希望数据包含
totalCount
属性,如下所示:
{
identifier: 'id',
items: [
{ id: 123, name: 'aaa', ... },
{ id: 456, name: 'bbb', ... },
...
],
totalCount: 525
}
当查询返回时(在onComplete
中),存储将保存此信息。然后通过存储上的getTotalCount()
方法公开该值
var store = new some.Datastore();
var gotItems = function(items, request){
console.log("Number of items located: " + items.length);
};
store.fetch({onComplete: gotItems});
当与开始
和计数
请求选项结合使用时,这允许您进行良好的ajax分页(“显示525中的1-50”)
因为这不是API的一部分,所以读取API的核心实现并不实现它。这种技术的一种形式(类似于我所做的)似乎是由dojo.data.QueryReadStore实现的,因此您也可以在那里查看。我正在使用JsonRest存储寻找这个问题的答案,似乎就是这样: 在服务器上,您应该查看 在请求中的范围标头处,以了解要返回的项目。这个 服务器应使用Content Range标头响应,以指示有多少个 正在返回的项目以及存在的项目总数:
Content-Range: items 0-24/66
From:dojo.data.api.Read的onBegin函数具有匹配的总大小:
function size(size, request){
// Do whatever with the size var.
}
store.fetch({query: {}, onBegin: size, start: 0, count: 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
},
})
使用dojo.data.ItemFileReadStore,您可以执行以下操作:myStore.\u getItemsArray().length,但这是该数据存储所特有的。我想知道获得商店规模的正确方法是什么。这种方法比我最初想象的还要粗糙。在调用fetch之前,数组不会初始化。因此,您必须确保在检查数组长度之前获取数据。>>store.\u getItemsArray().length 0>>>store.fetch()Object store=Object>>>store.\u getItemsArray().length 2