2009-10-27 12 views
5

nie widzę nic w API odczytu, który zapewnia dostęp do tego: http://api.dojotoolkit.org/jsdoc/1.3.2/dojo.data.api.ReadJak uzyskać liczenie (wielkość) przedmiotu w magazynie danych dojo?

+0

Z dojo.data.ItemFileReadStore można zrobić. myStore._getItemsArray() długość Ale to zwłaszcza do tego magazynu danych. Zastanawiam się, jaki jest właściwy sposób na uzyskanie rozmiaru sklepu. – Arlo

+0

Ta metoda jest jeszcze bardziej hackowa, niż początkowo sądziłem. Tablica nie jest inicjowana, dopóki nie zostanie wywołane pobieranie. Musisz więc upewnić się, że pobierasz przed sprawdzeniem długości tablicy. >>> store._getItemsArray(). Długość >>> store.fetch() = Przedmiot przechowywać Obiekt >>> store._getItemsArray(). Długość 2 – Arlo

Odpowiedz

1

Format danych przewodów dowolnego magazynu danych jest całkowicie zależny od sklepu. Aby uzyskać całkowitą liczbę elementów (i inne metadane), należy je zwrócić jako część odpowiedzi. Jest to jedyny sposób na tworzenie stronicowania po stronie serwera.

Wszystkie sklepy I wprowadziły oczekiwać dane zawierają atrybut totalCount, tak:

{ 
    identifier: 'id', 
    items: [ 
    { id: 123, name: 'aaa', ... }, 
    { id: 456, name: 'bbb', ... }, 
    ... 
    ], 
    totalCount: 525 
} 

Sklep zapisuje to, kiedy powróci zapytań (w onComplete). Wartość jest następnie eksponowana za pośrednictwem metody getTotalCount() w sklepie.

W połączeniu z opcjami żądania start i count pozwala to na ładowanie stronicowania ajaxów ("Wyświetlanie 1-50 z 525").

Ponieważ nie jest to część interfejsu API, podstawowe implementacje odczytanego interfejsu API nie implementują go. Forma tej techniki (podobna do tego, co zrobiłem) wydaje się być implementowana przez dojo.data.QueryReadStore, więc prawdopodobnie też możesz tam zajrzeć.

8

Przykładem na dojocampus pokazuje jeden sposób. W tym przypadku parametr fetch bez parametru query zwraca wszystkie elementy w magazynie.

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

szukałem odpowiedzi na to pytanie, używając sklep JsonRest, i to wydaje się być to:

na serwerze, należy spojrzeć w nagłówku klasy w żądaniu, aby wiedzieć, które elementy wracać. Serwer powinna reagować z nagłówka Content-klasy, aby wskazać ile produkty są zwracane i ile istnieje całkowity elementy:

Content-Range: items 0-24/66 

Od: http://dojotoolkit.org/reference-guide/dojo/store/JsonRest.html

0

Poniższy kod pracował dla mnie

// 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 
     }, 
    }) 
Powiązane problemy