【发布时间】:2011-06-15 07:25:28
【问题描述】:
我已经在 Stack Overflow 上潜伏了很长一段时间,并且找到了很多非常有用的答案。非常感谢社区!我希望能够在不久的将来提供我自己有用的答案。
与此同时,我还有一个我无法弄清楚的问题。我正在使用 Sencha Touch 创建一个基于 Web 的电话应用程序,但在使用嵌套循环遍历某些 JSON 时遇到了问题。我可以获取第一级数据,但不能获取嵌套在第一级中的项目。有点related ExtJS thread,但我决定创建自己的,因为 ExtJS 和 Touch 在微妙但重要的方面存在分歧。无论如何,这里有一些代码可以显示我在哪里:
JSON(截断 - JSON 是 PHP/MYSQL 生成的,目前实际上有三个带有“标题”的子级别,所有这些我都可以访问。这是我无法迭代的子级别“项目” ):
{
"lists": [
{
"title": "Groceries",
"id": "1",
"items": [
{
"text": "contact solution - COUPON",
"listId": "1",
"id": "4",
"leaf": "true"
},
{
"text": "Falafel (bulk)",
"listId": "1",
"id": "161",
"leaf": "true"
},
{
"text": "brita filters",
"listId": "1",
"id": "166",
"leaf": "true"
}
]
}
]
}
商店:
var storeItms = new Ext.data.Store({
model: 'Lists',
proxy: {
type: 'ajax',
method: 'post',
url : LIST_SRC,
extraParams: {action: 'gtLstItms'},
reader: {
type: 'json',
root: 'lists'
}
}
});
工作循环:
storeItms.on('load', function(){
var lstArr = new Array();
storeItms.each(function(i) {
var title = i.data.title;
lstArr.push(i.data.title);
});
console.log(lstArr);
});
不工作的嵌套循环:
storeItms.on('load', function(){
var lstArr = new Array();
storeItms.each(function(i) {
var title = i.data.title;
var id = i.data.id;
title.items.each(function(l) {
lstArr.push(l.data.text);
});
});
console.log(lstArr);
});
非工作嵌套循环给我错误“无法调用未定义的方法'each'”,参考'title.items.each ...'
我怀疑这是因为我没有将标题设置为设置键:值对的键,所以它只看到一个字符串列表......但我有点不知所措。
我应该提到,商店是通过两个相互关联的模型填充的。我知道 Store 可以访问所有内容,因为我可以通过 XTemplate 进行嵌套迭代。
我们将不胜感激任何帮助,并希望在不久的将来以实物形式返回社区!'
-埃里克
【问题讨论】:
标签: json sencha-touch nested-loops