我真的很困惑关于骨干中的收藏和模型的事情。由于我学习骨干,我还没有完全理解它。我正在研究一个用分支逻辑显示问题的骨干项目;出现的下一个问题是基于当前问题的答案。我创建了一个集合和模型,用于存储(如果这是正确的术语)响应,然后在单独的视图(电子邮件表单视图)中检索该响应,并将这些响应添加到消息框中。这是我收集的回复。
App.Collections.ResponseCollection = Backbone.Collection.extend({
model: App.Models.ResponseModel
});
这是模型:
App.Models.ResponseModel = Backbone.Model.extend({
idAttribute: "_id",
defaults: {
response: '',
answer: ''
}
});
是这样创建的:
saveResponse: function (qModel, option) {
var qid = qModel.get('question_id');
var mod = this.response.find(function (model1) {
return model1.get('_id') == qModel.get('question_id');
});
if (typeof (mod) == "undefined") {
var responseModel = new App.Models.ResponseModel({
_id: qModel.get('question_id'),
response: qModel.get('question'),
answer: option
});
this.response.add(responseModel);
}
else {
mod.set('answer', option);
}
},
在显示问题的视图中,我实例化了模型并添加了响应,然后将其添加到集合中。这很好 - 将响应添加到模型中,并将其添加到集合中。现在,我想检索此集合并从每个模型中获取响应,以便在textarea中添加它。所以,这就是我在电子邮件视图中所做的..
var options = new App.Collections.ResponseCollection();
但是当我在控制台中打印这个集合时,这就是我所看到的 - 集合中没有模型
child {length: 0, models: Array[0], _byId: Object, constructor: function, model: function…}
不会从数据库中保存和检索这些数据。这些响应将添加到模型中,以便稍后检索它以添加到电子邮件表单中。
我很困惑为什么它没有向我展示集合中的任何模型