문제
읽기 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
). 그런 다음 값은 a를 통해 노출됩니다 getTotalCount()
상점의 방법.
The와 함께 사용될 때 start
그리고 count
요청 옵션을 사용하면 멋진 Ajax Pagination ( "525의 1-50 표시")을 가질 수 있습니다.
이것은 API의 일부가 아니기 때문에 READ API의 핵심 구현은이를 구현하지 않습니다. 이 기술의 형태 (내가 한 것과 유사)는 dojo.data.QueryReadStore
, 그래서 당신은 아마 거기에서도 볼 수 있습니다.
다른 팁
예제 도코 캠퍼스 한 가지 방법을 보여줍니다. 여기에 fetch
없이 query
매개 변수는 상점의 모든 항목을 반환합니다.
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});
나는 JSONREST 매장을 사용 하여이 질문에 대한 답을 찾고 있었는데 이것은 다음과 같습니다.
서버에서는 요청의 범위 헤더를보고 반환 할 항목을 알아야합니다. 서버는 컨텐츠 범위 헤더로 응답하여 반환중인 품목 수와 얼마나 많은 총 품목 수를 나타냅니다.
Content-Range: items 0-24/66
에서: http://dojotoolkit.org/reference-guide/dojo/store/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
},
})