如何获取dojo数据存储的项目数量(大小)?
我没有看到读取API,提供对接入的任何东西: http://api.dojotoolkit.org/jsdoc/1.3.2/dojo.data.api.Read如何获取dojo数据存储的项目数量(大小)?
任何数据存储区的连线数据的格式完全是特定于存储区的格式。为了让您获得总项目数量(和其他元数据),它必须作为响应的一部分返回。这是做服务器端分页的唯一方法。
我已经实现全部的店面预计数据包含totalCount
属性,像这样:
{
identifier: 'id',
items: [
{ id: 123, name: 'aaa', ... },
{ id: 456, name: 'bbb', ... },
...
],
totalCount: 525
}
该店保存该查询的时候返回(在onComplete
)。然后通过商店上的getTotalCount()
方法显示该值。
当与start
和count
请求选项一起使用时,这可以让你有很好的ajax分页(“Showing 1-50 of 525”)。
由于这不是API的一部分,所以读取API的核心实现并不实现它。这种技术的一种形式(类似于我所做的)似乎是由dojo.data.QueryReadStore
实现的,所以你也可以在那里看看。
一个例子,在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});
我一直在寻找的答案,使用JsonRest店这个问题,这似乎是它:
在您的服务器,你应该看看 的Range头的知道哪些项目的要求回来。该 服务器应该与内容Range头回应,表示有多少被退回 项目和总项目存在多少:
Content-Range: items 0-24/66
来源:http://dojotoolkit.org/reference-guide/dojo/store/JsonRest.html
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._getItemsArray()长度 但这是特定于数据存储。我想知道获得商店大小的正确方法是什么。 – Arlo 2009-10-28 17:29:26
这种方法比我最初想象的更加骇人听闻。在调用提取之前,数组不会被初始化。所以你必须确保在检查数组长度之前获取数据。 >>> store._getItemsArray()。长度 >>> store.fetch() 对象存储=对象 >>> store._getItemsArray()。长度 2 – Arlo 2009-10-28 17:46:41