2012-07-18 77 views
0

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

+0

合乎邏輯的結論是視圖內的「重置」事件不會觸發。如何在附加你的事件處理程序之前向'.render'添加一個明確的調用? – jackwanders 2012-07-18 13:55:38

+0

你也許是指「'collection.bind(」reset「,this.render,this);'」? – rjz 2012-07-18 13:55:39

+0

沒有測試是存儲的集合 – 2012-07-18 13:57:27

回答

0

哎呦我的印象是綁定功能在呼喚渲染下,但似乎並非如此。

我只是把

this.render(); 

的意見初始化函數和它的工作。

有誰知道爲什麼我無法拉出一個單一模塊出集合上面?

+0

使用players.at(i) – codemonkey 2012-07-18 14:13:04

+0

這拉拉underfinwell – 2012-07-18 14:32:49