我一直在Stack Overflow上潛伏了很長一段時間,並且發現了相當多的非常有用的答案。非常感謝社區!我希望能夠在太久之前提供我自己有用的答案。Sencha Touch - 通過嵌套循環訪問相關模型商店JSON
與此同時,我還有另一個問題,我不明白。我正在使用Sencha Touch創建基於Web的電話應用程序,並且無法使用嵌套循環遍歷某些JSON。我可以獲取第一級數據,但不能嵌套在第一級數據中。有一些related ExtJS thread,但我決定創建自己的ExtJS和觸摸分歧以微妙而重要的方式。無論如何,這裏是一些代碼,以顯示我在哪裏:
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);
});
非工作嵌套循環給我的錯誤「無法調用‘每個’未定義」,在提及「title.items.each。 ..'
我懷疑這是因爲我沒有設置標題爲設置鍵:值對的關鍵,所以它只是看到一個字符串列表...但我有點兒在失利。
我應該提到商店通過兩個已經彼此關聯的模型進行填充。我知道Store可以訪問所有內容,因爲我可以通過XTemplate進行嵌套迭代。
任何幫助將不勝感激,並希望在太久之前返回到社區實物!
-Eric
謝謝你的回覆,詹姆斯!完整的數據結構包含各種列表(雜貨,待辦事項等)以及與每個列表相關的項目。我不能簡單地遍歷整個集合中的所有項目;相反,我需要迭代列表,並且在每次列表迭代期間,我需要遍歷列表的項目。 – Eric 2011-01-29 04:57:30