我刚刚开始使用Backbone.js并认为我有点理解它的概念。
背景故事: 我用jQuery和Handlebars做了一个交互式测验,现在我想迁移到Backbone。 测验从同一目录中的静态allQuestions.json文件中读取所有问题。 该文件如下所示:
{
"Q1" : {"question": "Vem är HON-chattens true Admin?",
"choices": ["Kattigpelika", "Bangan", "Naldor"],
"correctAnswer":0},
"Q2" : {"question":"Vem är chattens true mad son?",
"choices": ["Bangan","Grev3n","Mettapod"],
"correctAnswer":1
}
ETC...
(它的格式正确,因为我之前使用过它(使用$ .getJSON)
我现在正在尝试制作一个模型:
var Question = Backbone.Model.extend({
initialize:function(){
console.log("Created a model");
}
);
这是Collection的一部分:
var Questions = Backbone.Collection.extend({
model : Question,
url : "allQuestions.json"
});
我想要这个功能:
allQuestions.fetch({
success:function(){
console.log(allQuestions);
}
});
为.json文件中的每个对象创建一个新模型并将其放入集合中。 这可能吗?我在哪里想错了?
这是在我的电脑上本地完成的。
答案 0 :(得分:1)
理想情况下,您可以将数据放在由Web服务器发送的视图中并加载(请参阅http://backbonejs.org/#FAQ-bootstrap)。
否则,您需要重新定义收藏集的sync
方法,以便在方法“已阅读”时拨打$.getJSON
,否则您会像往常一样致电Backbone.sync
。
答案 1 :(得分:1)
这里的问题不是Backbone,而是JSON对象的结构。如果您可以将其修改为类似的内容,则会为每个问题加载不同的模型:
[
{
"id": "Q1",
"question": "Vem är HON-chattens true Admin?",
"choices": ["Kattigpelika", "Bangan", "Naldor"],
"correctAnswer":0
},
{
"id": "Q2",
"question":"Vem är chattens true mad son?",
"choices": ["Bangan","Grev3n","Mettapod"],
"correctAnswer":1
}
]
您可以在此JSFiddle中查看它是否有效。