我試圖用backbone.js
來管理測量邏輯。該應用程序旨在讓用戶開始回答問題並在任何給定時間繼續,因此需要保存進度。我有一個Question
模型是相當標準:如何在backbone.js中同時享受持久性和集合的使用?
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
可以讓我以一種看起來更加正確的方式來管理問題,因爲調查基本上是一組問題。兩種考慮之間的正確合併有什麼好的妥協?謝謝。