在我的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
答案 0 :(得分:0)
哎呀我认为绑定函数正在调用渲染,但似乎并非如此。
我只是把
this.render();
在视图初始化函数中并且它有效。
有谁知道为什么我无法从上面的集合中拉出单个模块?