我正在尝试使用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对象 - 除非我用一组主干模型显式初始化它,这将是需要额外的解析并绕过骨干处理RESTful JSON的方式。
另一方面,使用集合而不是模型会给我模型实例,但是为集合保存某种持久性(currentIndex
)似乎是不正确的,这不是为了管理数据。所以我有冲突 - 使用Backbone.Model
可以让我保存用户获得的调查范围,而使用Backbone.Collection
将允许我以一种看似更正确的方式管理问题,因为调查基本上是一系列问题。在两个考虑因素之间正确合并有什么好的妥协?感谢。
答案 0 :(得分:0)
我会按原样保留你的问题模型。我还会创建一个与问题相关的答案模型。所以它将具有属性id,questionID,userID,answerChoice和timestamp。
当用户进入您的调查时,我会获取()他的答案并将其放入答案集合中。
由于答案是自己的模型,每次他们回答你都可以轻松地将()保存到你的数据库。
然后,在你的回答集合中,我有一个函数可以通过时间戳或questionID检索你想要的最新答案模型。我想这取决于你真正想要的东西。
我认为这就是你的描述,但你怎么看?