在我的 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