Backbone.js视图未渲染

Backbone.js view not rendering

本文关键字:视图 js Backbone      更新时间:2023-11-03

在我的Backbone应用程序上,其中一个视图没有按预期呈现。

当用户遵循"test/addtests"路线时,它会调用下面显示的函数

addtests: function () {
    this.testView = new TestView();
},

然后,该视图应使用下方显示的初始化功能自动渲染

window.TestView = Backbone.View.extend({
    template: _.template($('#test').html()),
    initialize: function () {
        tests.bind("reset", this.render, this);
    },
    render: function (eventName) {
        alert('asdf');
        $(this.el).html(this.template());
        _.each(tests.models, function (test) {
             this.renderSelectBox(test);
         }, this);
        return this;
    },
    renderSelectBox: function (test) {
           var optionView = new TFS.FormOptionView({
               model: test
           });
           $(this.el).append(optionView.render().el);
       },
    events:{
        "click button": "addTest"
    },
    ...ect
});

但是什么也没发生,它只是显示最后一页的内容。我在渲染函数中设置的警报也不会触发。然而奇怪的是,如果我点击刷新,警报就会触发:S。

路由设置正确,并正确指向"addtests"函数,似乎只是没有按预期初始化视图。

另外,我发现令人困惑的第二件事是,如果我有一个完整的集合,我就无法使用get方法提取单个模块。例如

players // a full collection
var test = players.get(1);
console.log(test.get('id')); //undefined

:S

Whoops我以为bind函数在调用render,但事实似乎并非如此。

我刚放了

this.render();

在视图初始化功能中,它起作用了。

有人知道为什么我很难从上面的集合中取出一个模块吗??