更新到backbonejs后的分页错误最新版本

时间:2017-10-17 22:45:34

标签: javascript jquery backbone.js pagination

所以我正在学习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;
    }

});

您能否告诉我代码不适用于上一版本的原因,并修复它以使用最新的backbone.js

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试自己保留对选项的引用,我不认为新版本的骨干可以保留它。

Backbone.View.extend({

initialize: function (options) {
    //add this
    this.options = options; // or this.page = options.page and update render accordingly
    this.render();
},