0

アプリケーションで、どのタイプの JSON 構造を使用すべきか判断できないところまで来ました。私のアプリケーションには、以下のような複数のネストされたビューがあります-

-pageView
    -sectionView
        -articleView
            -widgetView
    -sectionView
        -articleView
            -widgetView
            -widgetView
        -articleView
            -widgetView

現在、すべての pageViews を 1 つに、すべての sectionViews を別の 1 つに含む単一の JSON ファイルを使用しています。これは、モデルの並べ替えと各ビューのレンダリングをバックボーン コレクションに大きく依存しているためです。しかし、明らかに、このタイプの構造では、ページ ビューだけで約 4 回のフェッチを行っています。(これは私のアプリのすべてではありません)。検索機能と完了状態の表示に必要なため、アプリの開始時にこれらすべてをフェッチします。各モデルはその親を認識しており、これが親コンテナに挿入できる方法です。

一方、すべてを含む 1 つの大きな入れ子になった JSON ファイルを使用すると、次のようになります。

{
    "page":"page_05",
    "title":"Title of page",
    ...
    "sections":[
        {
            "section":"section_05",
            "title":"section title",
            "articles":[
                {
                    "article":"article_05",
                    "title":"article title",
                    "widgets":[
                        {
                            "widget":"widget_05",
                            ...
                        }

                    ]
                }
            ]
        },
        {
            "section":"section_10"             
            ...
        }

    ]

データをコレクションに入れるだけなので、どのように構造化してもかまいません。単一の JSON ファイルを使用する場合、Backbone fetch が既にこれを行っているときに、これを行う関数を作成する必要があるのは少し奇妙に思えます。私が求めているのは...誰かがこの問題に遭遇したことがありますか?解決策は何でしたか? 考えやデモはいつでも大歓迎です。前もって感謝します。

4

1 に答える 1

2

fetch一般化してみると、あなたの問題は、理想的なデータ形式 (1 つの巨大な応答) が、モデルとコレクションで使用する Backbone のスキームに適合しないように見えることです。これは Backbone では珍しい問題ではないため、Backbone にはソリューションが組み込まれていますparse

と の両方Backbone.CollectionにメソッドBackbone.Modelparseあり、デフォルトでは何もしません。fetchただし、それをオーバーライドして、呼び出しから返されたもののカスタム応答処理を追加できます。たとえば、次のようになります。

parse: function(originalGiantResponse) {
    someModel.set(originalGiantResponse.someModelPart);
    someCollection.add(originalGiantResponse.someCollectionPart);
    return originalGiantResponse.mainPart; // use the "mainPart" of the response
}

1 つ以上のparseオーバーライドを使用することで、必要なサーバー側の JSON に任意の構造を使用できるようになり、必要なクライアント側のバックボーン コード構造にも適合させることができます。

于 2013-04-26T21:14:01.217 に答える