使用JSON文件中的数据创建模型的 Backbone.js 集合

0s7z1bwu  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(128)

我刚开始使用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文件中的每个对象创建一个新的模型,并将其放入集合中。这可能吗?我哪里想错了?
这都是在我的电脑上本地完成的。

rdrgkggo

rdrgkggo1#

这里的问题不在于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中检查它的工作情况。

zsbz8rwp

zsbz8rwp2#

理想情况下,您可以将数据放在Web服务器发送的视图中,然后加载该视图(请参见http://backbonejs.org/#FAQ-bootstrap)。
否则,您需要重新定义集合的sync方法,以便如果该方法为“read”,则调用$.getJSON,否则照常调用Backbone.sync

相关问题