2011-03-21 15 views
4

제거보기 :backbone.js : 이해 브라우저 이벤트 처리와 나는 그 같이 전망 및 관련 모델을 조롱하고있어

App.Views.Addresses   = App.Views.Addresses || {}; 
App.Views.Addresses.Address = Backbone.View.extend({ 

    events: { 
    "click button#foo"    : "clear" 
    }, 

    initialize: function(model){ 
       this.address = model.model; 
       this.address.view = this; 
       _.extend(this, Backbone.Events); 
       this.render(); 
       }, 

    render:  function(){ 
       ... rendering stuff 
       }, 

    clear:  function(){ 
       this.address.clear(); 
       } 
}); 

var Address = Backbone.Model.extend({ 

    url: function() { 
      ... url stuff 
     }, 

    clear: function(){ 
      this.destroy(); 
      this.view.remove(); 
     } 
}); 

나는 두 가지 문제에 직면하고있어 이리. 첫 번째 :

내 소스에 id = "foo"버튼이 있는데보기가이 바로 버튼의 '클릭'이벤트를 잡아 '맑은'이벤트를 시작하길 원합니다. 문제 : 이것은 작동하지 않습니다.

어쨌든 내 모델에서 'clear'를 손으로 호출하면 서버의 데이터가 제거되지만 뷰 자체는 제거되지 않습니다. 두 번째 문제가 있습니다. 바라건대 더 많은 경험을 가진 사람이 나를 계몽 할 수 있기를 바랍니다. 사전에

들으 펠릭스

답변

11

첫 번째 문제 :

  • 귀하의 버튼은 뷰에서 렌더링 요소 내에 있어야합니다.
    • 내부 요소에 백본 범위 이벤트에만
    당신은
    • 백본은 위임에 해당 요소를 사용 this.el 요소 내보기를 렌더링합니다

두 번째 문제 :

  • 이벤트를 사용하여보기 닫기
    • 보기를 모델에 저장하면 안됩니다. 이것은 MVC에서 일종의 "아니오"입니다. 이미 삭제 된 모델은 "제거"이벤트를 내 보냅니다. 귀하의 견해는 그것을 경청하고 이에 따라 행동해야합니다.
  • 당신은 자신
    • 이는 백본에 의해 처리되지 않는 DOM에서 뷰 요소를 제거해야합니다.

기타 일반적인 의견 :

  • 조회수 이미 확장되어 Backbone.Events
  • 대신 사용 this.address
+0

줄리앙의 this.model, 덕분에 이것에 대한 많은 하나. 몇 가지 변경 사항을 적용한 후 작업을 마쳤으며 더 나은 견해를 이해하게되었습니다. – GeorgieF