如何从dojo.data.ItemFileReadStore中检索值

mpbci0fu  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(172)

首先,我在这里读了这个简短的帮助线程:CLICK
它使用一个与PHP一起构建的JSON文件,看起来像这样:

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

所以,让我们说,我现在想“回声”在这个列表中的所有城市...这对我来说没有问题!:-)但我完全困惑如何访问人口为例!我如何才能使一个函数回声:“墨西哥城:人口:'1900万'时区:'-6 UTC'“例如?

ybzsozfc

ybzsozfc1#

你可以这样做:

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

请注意,您的数据应该有一个items键,用于保存实际数据的数组。
诚然,dojo数据存储一开始有点难以理解,但一旦你记住数据可以延迟和异步加载,这就有意义了,这就是为什么所有对项目的请求都要经过fetch,而对值的检索都要经过getValue
Dojocampus对ItemFileReadStore有一个很好的评价。

相关问题