我正在学习一些 JavaScript 书籍,使用 Node.js/Express/Jade/Backbone.js 并尝试使用一个简单的 Web 应用程序来跟踪扑克锦标赛,以提高我的新手 JS 技能,学习前面提到的技术,同时制作一个不错的扑克应用程序。这是我到目前为止的代码,首先使用网络上的各种资源和 PeepCodes Backbone.js Screencast(我将 node.js 设置为后端 api):
(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 模板)的正文中,紧跟在 Backbone.js 使用的容器 (#container) 之后,还删除了 windows.tournaments.fetch( ); 从上面的代码行。
script(type="text/javascript")
tournaments.reset(!{JSON.stringify(tournies)});
tournies 对象从渲染它的 Node.js 路由传递到 Jade 模板 (app.jade)。使用 Firebug,我可以看到 reset() 函数成功地以 JSON 格式获取数据,并且表正在由 Backbone 创建......但它没有被填充。任何帮助将不胜感激,因为我完全不知道问题是什么。另外,如果我在问题的结构中犯了任何错误,我深表歉意,因为我以前没有在这里发布过。如果我有,请随时告诉我。