2009-09-02 11 views
6

pierwszy, przeczytaj ten krótki pomocy wątek tutaj: CLICKJak pobierać wartości z dojo.data.ItemFileReadStore

Używa pliku JSON zbudowany razem z PHP, który wygląda mniej więcej tak:

{ name:'Italy', type:'country' }, 
{ name:'North America', type:'continent', 
    children:[{_reference:'Mexico'}, {_reference:'Canada'}, {_reference:'United States of America'}] }, 
{ name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq km', 
    children:[{_reference:'Mexico City'}, {_reference:'Guadalajara'}] }, 
{ name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}, 
{ name:'Guadalajara', type:'city', population:'4 million', timezone:'-6 UTC' }, 
{ name:'Canada', type:'country', population:'33 million', area:'9,984,670 sq km', 
    children:[{_reference:'Ottawa'}, {_reference:'Toronto'}] }, 

Powiedzmy, że chcę teraz "odbić" wszystkie miasta na tej liście ... to dla mnie żaden problem! :-) Ale jestem całkowicie zdezorientowany, jak uzyskać dostęp do populacji na przykład! Jak mogę utworzyć funkcję, która będzie echo: "Meksyk: miasto:" 19 milionów "strefa czasowa:" - 6 UTC "" na przykład?

Odpowiedz

10

Można to zrobić tak:

var data = { items: [{ name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}]}; 
var store = new dojo.data.ItemFileReadStore({ data: data }); 

// or just omit query object if you want all 
store.fetch({ query: { name: 'Mexico City' }, 
       onItem: function(item) { 
        console.log(store.getValue(item, 'name')); 
        console.log('population: ', store.getValue(item, 'population')); 
        console.log('timezone: ', store.getValue(item, 'timezone')); 
       } 
}); 

uwaga, że ​​dane powinny mieć klucz niepotrzebne trzyma tablicę swoich danych rzeczywistych.

Co prawda, sklepy danych w dojo są z początku dość trudne do opanowania, ale ma to sens, gdy zapamiętasz, że dane mogą być ładowane leniwie i asymetrycznie. Dlatego wszystkie żądania dotyczące przedmiotów przechodzą przez fetch, a pobieranie wartości przebiega przez getValue.

Dojocampus ma ładne napisanie o ItemFileReadStore.

Powiązane problemy