0

我正在使用 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"
    }
  ]
 },
]

如您所见,“引用”是一个对象数组,每个对象有两个属性。

问题:我用这些数据创建了一个 ItemFileReadStore,当我尝试获取它时没有显示任何内容。我一直在对此进行测试,并确认它适用于普通结构(没有嵌套对象)。

我想这家商店可能不是很好。

获取代码:

var store = ItemFileReadStore({data: response});  
store.fetch( { query: {'name': 'michael'}, onItem: function(item) {
                            console.log(store.getValue( item, 'surname' ));
                        }
                    });

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

谢谢!

4

1 回答 1

1

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

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

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

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

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

也有dojox.json.query,不过我没用过。

于 2012-04-19T14:15:09.777 回答