0

Backbones.js は初めてで、JSON URL を取得して正しく解析しようとしていました。

これは私のコードです:

window.Post = Backbone.Model.extend({
initialize: function(options) {
    this.id = options.id;
},
url: function() {
    return 'api/get_post/?post_type=movies&id=' + this.id;
},
parse : function(response) {
    return response.posts;
},
});

window.Posts = Backbone.Collection.extend({

model: Post,
defaults: {
   model: Post,
},
url: "api/get_recent_posts/?post_type=movies",

parse : function(response) {
    return response.posts;
},

});

両方を解析すると、お互いまたは何かが上書きされるようです。Post クラスから parse オプションを削除すると、コレクションから完全な応答が返されますが、モデルからは返されません。

異なる息子階層の解析を設定する方法に関する明確な例はありますか? 私のJSON結果は、実際のデータに飛び込む前にステータスがOKです。

4

1 に答える 1

0

bone.js を使用したことはありませんが、これらの例が役立つかもしれません。

あなたがしたいことはparse()、コレクション内の関数を取り除くことだと思います。これは、Post コレクションであるため、データが Post JSON オブジェクトの配列などとして入ってくることを前提としています[{id:'1', 'sub':{data}},{id:'2', 'sub':{data}},{id:'3', 'sub':{data}}]

Post モデルにサブモデルまたはコレクションがある場合、モデルはparse()サブオブジェクトのプロパティ名を受け取り、それを使用して何かを行います。

// In Post Model definition
parse:function(response) {
    if (response.sub) {
        // create some model or collection etc.
    }
}

parse:trueコレクションのフェッチを行うときに、オプションを渡す必要がある場合があります。

フェッチ呼び出しでサブモデルをインスタンス化する方法を理解するのに役立つかもしれないこれらの行に沿って何かを投稿しました。

Backbone.js: 1 回のリクエストで複数のコレクションを読み込む

バックボーン モデルのサブモデルのキャスト/初期化

これが役立つことを願っています。

于 2012-09-30T00:54:39.170 に答える