分页错误
问题描述:
所以我学习backbonejs,使用nodecellar-rethinkdb例如作为实践分页错误
更新Backbone.js的和Underscore.js文件的最后一个版本后,我发现了一个错误说“页面没有定义”。相同的代码与Backbone.js 0.9.2很好地工作。所以我想一些东西被弃用。
这里谁是给我的错误分页文件的代码:
window.WineListView = Backbone.View.extend({
initialize: function() {
this.render();
},
render: function() {
var wines = this.model.models;
var len = wines.length;
var startPos = (this.options.page - 1) * 8;
var endPos = Math.min(startPos + 8, len);
$(this.el).html('<ul class="thumbnails"></ul>');
for (var i = startPos; i < endPos; i++) {
$('.thumbnails', this.el).append(new WineListItemView({model: wines[i]}).render().el);
}
$(this.el).append(new Paginator({model: this.model, page: this.options.page}).render().el);
return this;
}
});
window.WineListItemView = Backbone.View.extend({
tagName: "li",
initialize: function() {
this.model.bind("change", this.render, this);
this.model.bind("destroy", this.close, this);
},
render: function() {
$(this.el).html(this.template(this.model.toJSON()));
return this;
}
});
能否请你给我为什么代码不能与去年的版本工作的原因,并修复它与最新的骨干工作.js
在此先感谢。
答
尝试保持参考你自己,我不认为新版本的骨干保持它。
Backbone.View.extend({
initialize: function (options) {
//add this
this.options = options; // or this.page = options.page and update render accordingly
this.render();
},
谢谢!添加两个作品:'initialize:function(options){this.options = options; this.page = options.page; this.render(); },' – RocketFuel
但是使用两个选项都可以吗?或者我可以修复它只使用1?因为当我使用只是:this.page = options.page;我得到一个错误,说没有定义选项 – RocketFuel
@RocketFuel当你使用第二个时,你需要更新以下行,如$(this.el).append(new Paginator({model:this.model,page:this.page}) .render()。el);'理想情况下,只要视图存在于内存中,就不需要保留对整个选项对象的引用,所以只需保留'this.page'就足够了 –