Collections 如何在backbone.js中享受持久性和集合的使用?

Collections 如何在backbone.js中享受持久性和集合的使用?,collections,backbone.js,persistence,Collections,Backbone.js,Persistence,我正在尝试使用backbone.js管理调查逻辑。该应用程序旨在允许用户开始回答问题并在任何给定时间继续,因此需要保存进度。我有一个非常标准的问题模型: App.Models.Question = Backbone.Model.extend({}); 然后我想要一个调查对象,它能记住最后一个完成的问题。我的第一个倾向是把它作为一个模型来写,因为需要某种持久性: App.Models.Survey = Backbone.Model.extend({ defaults: {

我正在尝试使用
backbone.js
管理调查逻辑。该应用程序旨在允许用户开始回答问题并在任何给定时间继续,因此需要保存进度。我有一个非常标准的
问题
模型:

App.Models.Question = Backbone.Model.extend({});
然后我想要一个
调查
对象,它能记住最后一个完成的问题。我的第一个倾向是把它作为一个模型来写,因为需要某种持久性:

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

    currentQuestion: function() { /*...*/ },
    nextQuestion:    function() { /*...*/ },
    prevQuestion:    function() { /*...*/ }
});
当我采用这种方法时,访问survey.get('questions')中的元素不会给我一个主干模型来使用,而是一个普通的javascript对象——除非我使用主干模型数组显式初始化它,这需要额外的解析,并绕过主干如何处理RESTful JSON


另一方面,使用集合而不是模型将为我提供模型实例,但是为集合保存某种类型的持久性(
currentIndex
)似乎是不正确的,因为它不用于管理数据。所以我很矛盾-使用
主干。模型
可以让我节省用户在调查过程中的时间,而使用
主干。集合
可以让我以一种似乎更正确的方式管理问题,因为调查基本上是一个问题集合。正确地将这两个考虑因素结合起来,有什么好的折衷办法?谢谢。

我将保留您的问题模型。我还将创建一个与问题相关的答案模型。因此,它将具有属性id、questionID、userID、answerChoice和timestamp

当用户进入您的调查时,我会获取()他的答案并将其放入答案集合中

因为答案是它自己的模型,所以每次他们回答时,您都可以轻松地将其保存到数据库中

然后,在您的答案集合中,我有一个函数,通过时间戳或问题ID检索您想要的最新答案模型。我想这取决于你到底想要什么


我想这就是你描述的意思,但你认为呢?

我会保持你的问题模型不变。我还将创建一个与问题相关的答案模型。因此,它将具有属性id、questionID、userID、answerChoice和timestamp

当用户进入您的调查时,我会获取()他的答案并将其放入答案集合中

因为答案是它自己的模型,所以每次他们回答时,您都可以轻松地将其保存到数据库中

然后,在您的答案集合中,我有一个函数,通过时间戳或问题ID检索您想要的最新答案模型。我想这取决于你到底想要什么

我想这就是你描述的意思,但你觉得呢