2

を使用して調査ロジックを管理しようとしてbackbone.jsいます。このアプリケーションは、ユーザーがいつでも質問への回答を開始して続行できるようにすることを目的としているため、進行状況を保存する必要があります。私はQuestionかなり標準的なモデルを持っています:

App.Models.Question = Backbone.Model.extend({});

次にSurvey、最後に完了した質問を記憶するオブジェクトが必要です。私の最初の傾向は、ある種の永続性が必要なため、モデルとして作成することでした。

App.Models.Survey = Backbone.Model.extend({
    defaults: {
        questions: [],
        currentIndex: 0
    },

    currentQuestion: function() { /*...*/ },
    nextQuestion:    function() { /*...*/ },
    prevQuestion:    function() { /*...*/ }
});

このアプローチをとるとき、内部の要素にアクセスすると、survey.get('questions')使用するバックボーンモデルが得られず、プレーンなjavascriptオブジェクトが得られます-バックボーンモデルの配列で明示的に初期化しない限り、追加の解析が必要になり、バックボーンの処理方法がバイパスされますRESTfulJSON。

一方、モデルの代わりにコレクションを使用すると、モデルインスタンスが得られますが、currentIndexデータの管理を目的としていないコレクションの永続性()を保存するのは正しくないようです。だから私は対立しています-調査は基本的に質問のコレクションであるため、を使用するとBackbone.Model、ユーザーが調査に沿ってどこまで進んだかを保存できますが、を使用Backbone.Collectionすると、より正確に見える方法で質問を管理できます。2つの考慮事項を正しくマージするための適切な妥協点は何ですか?ありがとう。

4

1 に答える 1

0

質問のモデルをそのままにしておきます。また、質問に関連する回答モデルも作成します。したがって、属性 id、questionID、userID、answerChoice、およびタイムスタンプが含まれます。

ユーザーがあなたの調査に入ると、私は彼の回答を fetch() して回答コレクションに入れます。

回答は独自のモデルであるため、回答するたびに簡単にデータベースに save() できます。

次に、回答コレクションに、タイムスタンプまたは質問 ID を介して必要な最新の回答モデルを取得する関数を用意します。それはあなたが実際に何を望んでいるかに依存すると思います。

これがあなたの説明の意味だと思いますが、どう思いますか?

于 2012-08-11T20:45:51.577 に答える