2009-09-02 14 views
6

En primer lugar, he leído este hilo corto de ayuda aquí: CLICK¿Cómo puedo recuperar los valores de dojo.data.ItemFileReadStore

Se utiliza un archivo JSON construido juntos con PHP, que es como la siguiente:

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

Digamos que ahora quiero "hacer eco" de todas las ciudades en esta lista ... ¡eso no es problema para mí! :-) ¡Pero estoy totalmente confundido sobre cómo acceder a la población, por ejemplo! ¿Cómo puedo hacer una función que echos: "Ciudad de México: población: '19 millones 'zona horaria:' - 6 UTC '" por ejemplo?

Respuesta

10

Puede hacerlo de esta manera:

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

Tenga en cuenta, que sus datos deben tener una clave de artículos que contiene una matriz de los datos reales.

Es cierto que las tiendas de datos dojo son un poco difíciles de entender al principio, pero tiene sentido una vez que recuerde que los datos podrían cargarse de forma perezosa y de manera asilárgica. Es por eso que todas las solicitudes de artículos pasan por fetch y la recuperación de valores pasa por getValue.

Dojocampus tiene un lindo artículo sobre ItemFileReadStore.

Cuestiones relacionadas