Я изучаю несколько книг JavaScript, возиться с Node.js/Express/Jade/Backbone.js и экспериментировать с простым веб-приложением, чтобы отслеживать покерные турниры чтобы улучшить мои новички JS-навыков, изучить ранее упомянутые технологии и сделать приличное покерное приложение одновременно. Это код, который я до сих пор, с использованием различных источников в Интернете и PeepCodes первый Backbone.js Screencast (я node.js настроен как бэкэнд API):Backbone.js .reset() Не удалось загрузить данные Bootstrap
(function ($) {
window.Tournament = Backbone.Model.extend({});
window.Tournaments = Backbone.Collection.extend({
model: Tournament,
url: '/tournaments'
});
window.tournaments = new Tournaments();
// I removed this line once I attempted to bootstrap the data.
window.tournaments.fetch();
window.TournamentView = Backbone.View.extend({
tagName: 'tr',
className: 'tournaments',
initialize: function() {
_.bindAll(this, 'render');
this.model.bind('change', this.render);
this.template = _.template($("#tournament-template").html());
},
render: function() {
var renderedContent = this.template(this.model.toJSON());
$(this.el).html(renderedContent);
return this;
}
});
window.TournamentsView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'render');
this.collection.bind('reset', this.render);
},
render: function() {
$(this.el).html($("#tournaments-template").html());
(this.collection).each(function(tournament) {
var view = new TournamentView({
model: tournament,
collection: this.collection
});
$("#tournaments").append(view.render().el);
});
return this;
}
});
window.BackboneTournaments = Backbone.Router.extend({
routes: {
'': 'tournaments'
},
initialize: function() {
this.tournamentsView = new TournamentsView({
collection: window.tournaments
});
},
tournaments: function() {
$("#container").empty();
$("#container").append(this.tournamentsView.render().el);
}
});
$(function() {
window.App = new BackboneTournaments();
Backbone.history.start({});
});
})(jQuery);
Это отлично работает. У меня есть страница с заполненной таблицей турниров по покеру. Но после того, как я попытаюсь загрузить данные, чтобы он не извлекал его после загрузки страницы (и показывая незаселенную таблицу на долю секунды), он больше не работает. Я поместил следующий код в тело одной страницы приложения (app.jade, шаблон Jade) сразу после контейнера (#container), используемого Backbone.js, а также удалил windows.tournaments.fetch (); строка из приведенного выше кода.
script(type="text/javascript")
tournaments.reset(!{JSON.stringify(tournies)});
объект В tournies настоящее время передается в шаблон Джейд (app.jade) от маршрута Node.js, что делает его. Используя Firebug, я вижу, что функция reset() успешно получает данные в формате JSON, и таблица создается Backbone ... но она не заполняется. Любая помощь будет оценена по достоинству, поскольку у меня нет абсолютно никакой информации о том, в чем проблема. Кроме того, я приношу свои извинения, если я ошибался в структуре моего вопроса, как я уже здесь не писал. Не стесняйтесь, дайте мне знать, если у меня есть.
Как 'tournaments.reset ({JSON.stringify (tournies) }) 'не передадите вам какую-либо ошибку? –
Я не знаю. Должен ли он передать мне ошибку? Я собираю некоторые ссылки на загрузочные данные из http://dailyjs.com/2011/04/04/node-tutorial-19/ и http://documentcloud.github.com/backbone/#FAQ-bootstrap. Я запускаю метод сброса в своей коллекции турниров и передаю ему массив объектов JSON, которые соответствуют турнирам. –
Так что это шаблон Джейд, а не JavaScript? Вы можете сделать это ясно. –