我正在使用Dojo工具包通过ajax请求从外部JSON源(Web服务)获取数据。我正在使用这个检索到的数据来创建一个ItemFileReadStore,然后我使用它的fetch方法来打印它包含的对象的一些属性。
JSON源具有嵌套属性,例如:
[
{
"name":"michael",
"surname":"owen",
"reference": [
{
"code":21,
"date":"01-01-2001"
},
{
"code":134,
"date":"11-05-2011"
}
]
},
{
"name":"robert",
"surname":"foreman",
"reference": [
{
"code":33,
"date":"11-10-2009"
}
]
},
]
如您所见,“reference”是一个对象数组,每个对象都有两个属性。
问题:我用这个数据创建一个ItemFileReadStore,当我尝试获取它时没有显示任何内容。我一直在测试这个,我确认它适用于普通的结构(没有嵌套对象)。
我认为商店可能并不是很好。
获取代码:
var store = ItemFileReadStore({data: response});
store.fetch( { query: {'name': 'michael'}, onItem: function(item) {
console.log(store.getValue( item, 'surname' ));
}
});
所以,问题是:我能以某种方式阅读嵌套结构吗?也许与另一种商店?使用另一种语法?
谢谢!
答案 0 :(得分:1)
答案取决于您希望如何使用商店。
新的dojo.store
API允许您将函数作为查询传递,您可以在函数中执行自定义过滤。
http://dojotoolkit.org/features/1.6/object-store
但是,许多当前的dojo小部件仍然使用dojo.data
API(ItemFileReadStore)。有一个适配器,但您无法将函数传递给查询。
网格之类的小部件允许您直接设置项目而不必查询。如果是这种情况,您可以使用新的商店API查询并手动将项目设置到网格上。
还有dojox.json.query
,但我从未使用过它。