私はかなり長い間スタックオーバーフローに潜んでいて、かなりの数の非常に役立つ答えを見つけました。コミュニティに感謝します!近いうちに、私自身の役立つ回答を提供できることを願っています。
それまでの間、私には理解できない別の問題があります。Sencha Touch を使用して Web ベースの電話アプリを作成していますが、ネストされたループを使用して JSON を反復処理するのに問題があります。最初のレベルのデータは取得できますが、その最初のレベル内にネストされたアイテムは取得できません。多少関連する ExtJS スレッドがありますが、ExtJS と Touch は微妙ではあるが重要な点で分岐しているため、独自のスレッドを作成することにしました。とにかく、ここに私がどこにいるかを示すコードがあります:
JSON (切り捨て - JSON は PHP/MYSQL で生成されたもので、現在、実際には「タイトル」を含む 3 つのサブレベルがあり、そのすべてにアクセスできます。反復できないサブレベルの「項目」です):
{
"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...」に関して「undefined のメソッド 'each' を呼び出せません」というエラーが表示されます。
これは、タイトルをキーと値のペアを設定するためのキーに設定していないためだと思われるため、文字列のリストが表示されるだけです...しかし、私はちょっと途方に暮れています.
ストアには、互いに関連付けられた 2 つのモデルを介してデータが取り込まれていることに注意してください。XTemplate を介してネストされた反復を実行できるため、Store がすべてにアクセスできることはわかっています。
どんな助けも大歓迎です。うまくいけば、近いうちにコミュニティに返還されることを願っています!
-エリック