2012-09-21 215 views
0

事件发生后重新渲染视图的最佳方式是什么(例如,提交音符)。在下面的代码中,我想重新渲染视图以显示刚添加的注释。 )重新渲染视图

views['#Notes'] = new NotesView({ el: '#Notes', template: app.templates.Notes }); 

我试图使用视图[ '#注']渲染(;:

var NotesView = SectionBaseView.extend({ 
     model: app.models.Note, 
     events: { 
      'submit': 'Notes' 
     }, 
     Notes: function (e) { 
      e.preventDefault(); 

      var details = new this.model($('form').serializeObject()); 
      details.url = '/email/Notes'; 

      details 
       .save() 
       .done(function() {     
        app.notifySuccess('Note added successfully.'); 
       });   
      views['#Notes'].render();      
     }  
    }); 

Notes视图在的document.ready功能初始化如下。但这似乎并不奏效。

+0

渲染的默认实现是一个空操作。你的渲染函数在哪里? –

回答

0

渲染的默认实现是无操作。使用从模型数据呈现视图模板的代码覆盖此函数,并使用新的HTML更新this.el。一个好的约定是在渲染结束时返回这个以启用链接调用。 Docs

var NotesView = SectionBaseView.extend({ 
     model: app.models.Note, 
     events: { 
      'submit': 'Notes' 
     }, 

     render : function(){ 
       //your code 
       return this; 
     }, 

     Notes: function (e) { 
      var that = this; 
      e.preventDefault(); 

      var details = new this.model($('form').serializeObject()); 
      details.url = '/email/Notes'; 

      details 
       .save() 
       .done(function() {     
        app.notifySuccess('Note added successfully.'); 
       });   
      that.render();      
     }  
    }); 

上的document.ready

views['#Notes'] = new NotesView({ el: '#Notes', template: app.templates.Notes }); 
views['#Notes'].render(); 
+0

render方法已经存在于SectionBaseView中。这就是为什么我要调用views ['#Notes']。render(); – dotNetNewbie