0

要するに、他のコレクションやモデルのバックボーン深いコレクションを作りたい

構造はこんな感じ

[{
    mainCategory: "Something"
    subCategories: [
        {
            category: "SomethgingElse",
            labs: [
            {
                id: 1,
                title: "Title",
                description : "Lorem ipsum dolor sit amet"
                availablelanguages: ["fr","en"]
            },
            {
                id: 2,
                title: "Another Title",
                description : "Lorem ipsum dolor sit amet",
                availablelanguages: ["fr","en"]
            }]
        },
        {
            category: "Testing",
            labs: [
            {
                id: 1,
                title: "ZZZZ",
                description : "Lorem ipsum dolor sit amet"
                availablelanguages: ["ar","en"]
            },
            {
                id: 2,
                title: "VVVVV",
                description : "Lorem ipsum dolor sit amet",
                availablelanguages: ["ar","en"]
            }]
        }

    ]
}]

次のようないくつかのコレクションとモデルを定義しました

var Item = Backbone.Model.extend({
    defaults: {
        title : '',
        description: '',
        availableLangagues : []
    }
});
var Items = Backbone.Collection.extend({
    model: Item
});

var Category = Backbone.Model.extend({
    defaults: {
        categoryName: '',
        labsList: new Items()
    }
});
var Categories = Backbone.Collection.extend({
    model: Category
});
var TopCategory = Backbone.Model.extend({
    defaults: {
        topCategory: "",
        categories: new Categories()
    }
});
var TopCategories = Backbone.Collection.extend({
    model: TopCategory
});

fetchここで私の問題を呼び出しTopicCategoriesたいのですが、すべてを入力したいのですが、例で渡されfetchたようなものを返しますが、呼び出すとデータが返されますが、配列は通常の JavaScript 配列であり、i のようなバックボーン コレクションではありません。デフォルトで欲しかったJSONfetchTopCategories

4

1 に答える 1

2

あなたがしたいことはparse()、最上位モデルの機能を活用することです。この変更された解析では、応答からさまざまなオブジェクト/配列を抜き出し、それらを必要なコレクションに変換します。例: parse()TopCategory モデル。

parse: function(response) {

    if (response.subCategories){

        if (!this.subCategories) {
            this.subCategories = new Categories(response.subCategories);
        } else {
            this.subCategories.reset(response.subCategories);
        }

        delete response.subCategories;
    }

    return response;
}

解析したいある種のバックボーン コレクションを持つ親モデルごとに、解析定義でこのパターンを実行します。

このリンクは、これがどのように機能するかについて、さらにいくつかのアイデアを提供するかもしれません。

ネストされたコレクションの扱い

于 2012-09-22T08:46:54.937 に答える