2012-07-18 76 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