我正在尝试使用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
为集合保存某种持久性 ( ) 似乎是不正确的,这并不意味着管理数据。所以我很矛盾 - 使用 aBackbone.Model
可以让我保存用户在调查中的进展情况,而 usingBackbone.Collection
可以让我以一种看起来更正确的方式管理问题,因为调查基本上是问题的集合。在这两个考虑因素之间正确合并的一个好的折衷方案是什么?谢谢。