2

私は通常の免責事項から始めます:SenchaTouchの初心者/JSONでの作業、暗闇の中で悩んでいます。正しい方向への助けや提案は、あなたが知っている以上にありがたいです!

アプリで公開されているGoogleスプレッドシートのJSONフィードからデータを取得しようとしています。私が何とか理解したことから、私の現在のモデルは、ネストされたオブジェクトではなく、JSON配列に基づいています。ネストされたオブジェクトにアクセスして返すにはどうすればよいですか?

Ext.regModel('Count', {
    fields: [{name:'$t'}]

});

this.list = new Ext.List({
            itemTpl: new Ext.XTemplate('<div>{$t}</div>'),
            loadingText: false,
            store: new Ext.data.Store({
                model: 'Count',
                proxy: {
                    type: 'scripttag',
                     url :  'http://spreadsheets.google.com/feeds/cells/0AuYDRk91MX8-dHhkV29ZVkRGNjlvZjV4QVBIVmJubVE/odb/public/basic?range=A1&alt=json',
                    reader: {
                        type: 'json',
                        root: 'feed'
                    }
                }
            })
        });

JSONデータ(余分なものは削除されました。上記のリンクには、必要に応じてすべてが表示され、投稿したくないメールアドレスが含まれており、インデックスに登録されています):

{
    "feed":{
        "entry":[{
            "content":{
                "type":"text",
                "$t":"11"
            }
        }]
    }
}

配列を使用する別のJSONフィードを入力すると、問題なく処理できますが、$tに対応するオブジェクト内のその整数にアクセスするために何をする必要があるかがわかりません。ルートとして「feed」ではなく「entry」を指定すると、「Uncaught TypeError:Undefinedのプロパティ「length」を読み取れません」というエラーが発生します。

4

1 に答える 1

4

ソリューション!Senchaは私のテンプレート変数の$が気に入らなかったことがわかりました。

Ext.regModel('Count', {
    fields: [{name:'count', mapping:'content.$t'}]

});

this.list = new Ext.List({
            itemTpl: new Ext.XTemplate('<div>{count}</div>'),
            loadingText: false,
            store: new Ext.data.Store({
                model: 'Count',
                proxy: {
                    type: 'scripttag',
                     url :  'http://spreadsheets.google.com/feeds/cells/0AuYDRk91MX8-dHhkV29ZVkRGNjlvZjV4QVBIVmJubVE/odb/public/basic?range=A1&alt=json',
                    reader: {
                        type: 'json',
                        root: 'feed.entry'
                    }
                }
            })
        });
于 2011-04-27T16:42:24.663 に答える