2012-09-21 2 views
0

이벤트 (예 : 메모 제출)가 발생한 후보기를 다시 렌더링하는 가장 좋은 방법은 무엇입니까? 아래 코드에서 방금 추가 한 메모를 표시하도록보기를 다시 렌더링하고 싶습니다. 다음보기 다시 렌더링

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();      
     }  
    }); 

노트보기는 document.ready 함수에서 초기화된다 :

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

내가보기 [ '# 노트']하여 시도 렌더링(). 하지만 이것은 작동하지 않는 것 같습니다.

+0

렌더링의 기본 구현에 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(); } }); 

은 no-op입니다. 렌더링 기능은 어디에 있습니까? –

답변

0

기본 렌더링 구현은 no-op입니다. 모델 데이터에서 뷰 템플릿을 렌더링하는 코드로이 함수를 재정의하고 this.el을 새 HTML로 업데이트합니다. 좋은 컨벤션은 연쇄 호출을 가능하게하기 위해 렌더링의 끝에서 이것을 반환하는 것이다. document.ready

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

render 메서드가 SectionBaseView에 이미 있습니다. 그래서 뷰 ​​[ '# Notes']를 호출합니다. render(); – dotNetNewbie

관련 문제