如果响应数据具有嵌套对象,则ItemFileReadStore fetch不起作用

时间:2012-04-19 13:54:12

标签: ajax json dojo store

我正在使用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' ));
                        }
                    });

所以,问题是:我能以某种方式阅读嵌套结构吗?也许与另一种商店?使用另一种语法?

谢谢!

1 个答案:

答案 0 :(得分:1)

答案取决于您希望如何使用商店。

新的dojo.store API允许您将函数作为查询传递,您可以在函数中执行自定义过滤。

http://dojotoolkit.org/features/1.6/object-store

但是,许多当前的dojo小部件仍然使用dojo.data API(ItemFileReadStore)。有一个适配器,但您无法将函数传递给查询。

网格之类的小部件允许您直接设置项目而不必查询。如果是这种情况,您可以使用新的商店API查询并手动将项目设置到网格上。

还有dojox.json.query,但我从未使用过它。