Backbone.js视图不呈现
在我的Backbone应用程序中,其中一个视图未按预期呈现。Backbone.js视图不呈现
当用户遵循路线“测试/ 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
哎呦我的印象是绑定功能在呼唤渲染下,但似乎并非如此。
我只是把
this.render();
的意见初始化函数和它的工作。
有谁知道为什么我无法拉出一个单一模块出集合上面?
使用players.at(i) – codemonkey 2012-07-18 14:13:04
这拉拉underfinwell – 2012-07-18 14:32:49
合乎逻辑的结论是视图内的“重置”事件不会触发。如何在附加你的事件处理程序之前向'.render'添加一个明确的调用? – jackwanders 2012-07-18 13:55:38
你也许是指“'collection.bind(”reset“,this.render,this);'”? – rjz 2012-07-18 13:55:39
没有测试是存储的集合 – 2012-07-18 13:57:27