我刚开始使用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...
(It的格式正确,因为我以前使用过它(使用$.getJSON)
我现在正在尝试制作一个模型:
var Question = Backbone.Model.extend({
initialize:function(){
console.log("Created a model");
}
);
属于集合的一部分:
var Questions = Backbone.Collection.extend({
model : Question,
url : "allQuestions.json"
});
我想要函数:
allQuestions.fetch({
success:function(){
console.log(allQuestions);
}
});
为.json文件中的每个对象创建一个新的模型,并将其放入集合中。这可能吗?我哪里想错了?
这都是在我的电脑上本地完成的。
2条答案
按热度按时间rdrgkggo1#
这里的问题不在于Backbone,而在于JSON对象的结构。如果可以将其修改为如下形式,它将为每个问题加载不同的模型:
您可以在此JSFiddle中检查它的工作情况。
zsbz8rwp2#
理想情况下,您可以将数据放在Web服务器发送的视图中,然后加载该视图(请参见http://backbonejs.org/#FAQ-bootstrap)。
否则,您需要重新定义集合的
sync
方法,以便如果该方法为“read”,则调用$.getJSON
,否则照常调用Backbone.sync
。