#json #backbone.js
#json #backbone.js
Вопрос:
У меня есть файл JSON, который мне нужно отобразить в моем магистральном приложении, используя HandlebarsJS
, но я не совсем уверен, как этого добиться.
Вот структура моего файла JSON:
data: {title:Win special things, startDate:null, endDate:2014-08-04T10:00:00.000Z,privacy:public,…}
contest_id: 11
endDate: "2014-08-04T10:00:00.000Z"
privacy: "public"
question: {title:When was "The Black Album" released?, question_id:11,…}
answers: [{answer_id:16, answer:1992, correct:false, createdAt:2014-06-23T08:09:17.000Z,…},…]
0: {answer_id:16, answer:1992, correct:false, createdAt:2014-06-23T08:09:17.000Z,…}
1: {answer_id:17, answer:1993, correct:false, createdAt:2014-06-23T08:09:17.000Z,…}
2: {answer_id:18, answer:1991, correct:true, createdAt:2014-06-23T08:09:17.000Z,…}
3: {answer_id:19, answer:1990, correct:false, createdAt:2014-06-23T08:09:17.000Z,…}
answer: "1990"
answer_id: 19
contest_questionId: 11
correct: false
createdAt: "2014-06-23T08:09:17.000Z"
updatedAt: "2014-06-23T08:09:17.000Z"
question_id: 11
title: "When was "The Black Album" released?"
startDate: null
status: "editing"
title: "Win special things"
Я пытался сделать это:
SingleCompetition.SingleCompetitionCollection = Backbone.Collection.extend({
url: function() {
return App.APIO '/i/contest/' 11; // *('11' is the id of the contest)*
}
});
но когда я утешаю.зарегистрируйте коллекцию после singleCompetitionCollection.fetch()
— она сообщает мне undefined
, и она ничего не возвращает.
Как я могу это сделать?
Обновить
Ок, изменен на :
SingleCompetition.SingleCompetitionModel = Backbone.Model.extend({
url: function() {
return App.APIO '/i/contests';
},
defaults: {
"data": []
}
});
и мой HTML-файл HandlebarsJS выглядит так (просто немного, просто в качестве примера):
{{#each this}}
<li>
<h2>{{title}}</h2>
</li>
{{/each}}
Он показывает <h2>
пустой. Консоль сообщает мне, что data JSON доступен, поэтому я думаю, в чем может быть проблема?
Комментарии:
1. 1) json недопустим 2) коллекция SingleCompetitionCollection не имеет модели 3) нет модели конкуренции 4) нужна функция синтаксического анализа для обработки такого json
2. Хорошо, JSON действительно действителен 🙂 и добавлена модель сейчас, пожалуйста, проверьте обновленный код выше
Ответ №1:
попробуйте это
SingleCompetition.SingleCompetitionCollection = Backbone.Collection.extend({
model: SingleCompetition.SingleCompetitionModel,
url: json_url_here,
initialize: function() {
this.fetch({ type:"GET" }).error(function(){
console.error("error");
});
}
});
Ответ №2:
Я исправил это сам, просто сделав это:
{{#each data}}
<li>
<h2>{{title}}</h2>
</li>
{{/each}}
Теперь он отображает то, что я хочу!
Спасибо за помощь, хотя!