在我的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
合乎邏輯的結論是視圖內的「重置」事件不會觸發。如何在附加你的事件處理程序之前向'.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