我没有在read API中看到任何提供访问权限的内容: http://api.dojotoolkit.org/jsdoc/1.3.2 /dojo.data.api.Read

有帮助吗?

解决方案

任何数据存储的有线数据格式都是特定于商店的。为了获得总项数(和其他元数据),必须将其作为响应的一部分返回。这是进行服务器端分页的唯一方法。

我实现的所有商店都希望数据包含 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 实现的,所以你也可以在那里查看。

其他提示

dojocampus 的一个示例演示了一种方法。这里没有 query 参数的 fetch 返回商店中的所有商品。

var store = new some.Datastore();
var gotItems = function(items, request){
  console.log("Number of items located: " + items.length);
};
store.fetch({onComplete: gotItems});

dojo.data.api.Read的onBegin函数具有匹配的总大小:

function size(size, request){
  // Do whatever with the size var.
}

store.fetch({query: {}, onBegin: size, start: 0, count: 0});

从这个快速入门: http://dojotoolkit.org/reference-guide/1.7/quickstart/data/usingdatastores/faq.html#question-6-how- DO-I-GET-A-计数的,所有项目-IN-A-数据存储

我正在使用JsonRest商店寻找这个问题的答案,这似乎就是这样:

  

在你的服务器上,你应该看看   在请求中的Range标头处,以了解要返回的项目。该   服务器应该使用Content-Range标头响应以指示多少   正在退回物品以及存在多少物品:

Content-Range: items 0-24/66

来自: http://dojotoolkit.org/reference-guide/dojo/存储/ JsonRest.html

以下代码对我有用

  // 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
      },
   })
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top