0

私はsenchatouchを初めて使用し、データの配列を解析しようとしています(これは珍しい使用例ではないようですが、オンラインでは何も見つかりません)。ネストされたjsonのsenchaext.data.reader.jsonドキュメントに従いましたが、機能しません。これが私のモデルです:検索結果(複数の検索結果を保持するため):

Ext.define('GS.model.SearchResults', {
extend: 'Ext.data.Model',
autoLoad: true,
config: {
    fields: [
        {name: 'query', type: 'string'},
    ],
    hasMany  : {model: 'SearchResult', name: 'results'},

        }
});

そして検索結果、個別の検索結果を保持する

Ext.define('GS.model.SearchResult', {
extend: 'Ext.data.Model',

config: {
    fields: [
        {name: 'id',     type: 'int'},
        {name: 'name',      type: 'string'}
    ],
    belongsTo: 'SearchResults'
}
});

次に、私のコントローラーには、次のコードがあります。

var store = Ext.create('Ext.data.Store', {
        autoLoad: "true",
        model: "GS.model.SearchResults",
        proxy: 
        {
            type: 'ajax',
            url : 'www.someurl.com/?query=somequery',
            reader: {
                type: 'json'
            }
        }
    });
    store.load({
        callback: function() {
            console.log("Done Loading");
            var root = store.first();

            console.log("Results for " + root.get('query')); //this prints correctly


            console.log(root.results());//THIS IS THE LINE IM INTERESTED IN
            console.log(root.raw.results);//this weirdly works
            //now I want to print each search results name
            root.results().each(function(result) {
                console.log("Song: " + result.get('name'));
            });

        }
    });

}

root.results()をログに記録すると、

Uncaught TypeError:オブジェクト[オブジェクトオブジェクト]にはメソッド'results'がありません

これはまさに彼らがドキュメントでそれを行う方法です、それで誰もがこれが機能しない理由を知っていますか?

編集:これが私がフォローしていたドキュメントです

4

2 に答える 2

0

苦痛な試行錯誤の末、私はそれを理解しました。チュートリアルでは、型にはまらないモデル名を使用していましたが、私の場合は、完全に修飾されたモデル名を使用する必要がありました

だから修正するために私は変更する必要がありました

hasMany  : {model: 'SearchResult', name: 'results'},

hasMany  : {model: 'GS.model.SearchResult', name: 'results'},

そして、このような私のより深いモデルと同じです:

belongsTo: 'GS.model.SearchResults'

キャッチするのは難しいエラーですが、これが私の立場にいる他の誰かを助けることができることを願っています

于 2012-12-16T21:49:41.257 に答える
0

エラーを確認する最良の方法は、Chromeコンソールでデバッグすることです。コールバック後、root.rawまたはroot.dataにレコードが見つかります。

私はChromeコンソールでデバッグし、必要なコードを書くために使用します。

于 2012-12-07T04:40:17.860 に答える