views:

2350

answers:

1

First, I read this short help thread here: CLICK

It uses a JSON file built together with PHP which looks something like THIS:

{ 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'}] },

So let's say I now want to "echo" all the cities in this list ... that's no problem for me! :-) But I'm totally confused how to access the population for example! How can I make a function which echos: "Mexico City: population:'19 million' timezone:'-6 UTC'" for example?

+2  A: 

You can do it like so:

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' ) );
               }
});

Note, that your data should have an items key that holds an array of your actual data.

Admittedly, dojo data stores are a bit difficult to wrap your head around at first but it makes sense once you remember that the data could be loaded lazily and asychronously. That's why all requests for items go through fetch and retrieving values goes through getValue.

Dojocampus has a nice write-up about ItemFileReadStore.

seth