2012-03-08 4 views
0

백본 일정이 있고 매일 여러 가지 옵션이 있습니다. 사용자는 한 번에 하루 만 볼 수 있습니다.백본보기의 자식 바인딩 해제

그래서 사용자가 다음 또는 이전 날짜로 이동을 선택하면 MyApp.Views.ShowDay으로 전화하여 해당 날짜를 다시 그립니다.

ShowDay보기는 몇 가지 하위보기 MyApp.Views.Hours을 호출합니다. 새 날을 만들 때 옛날부터 시간을 바인딩 해제해야하지만 오류가 발생하고 있습니다.

나는 그것이

 
MyApp.Views.Showday = Backbone.View.extend({ 
    events: { 
      "click div.change_day":"change_day" 
    }, 

    change_day: function(){ 
     MyApp.Views.Hours.unbind(); //I've tried off(), off, remove() as well 

    } 

}); 

이다 할 노력하고있어 방법이 아이를 바인딩을 해제 할 수있는 방법은없는가요?

답변

1

이벤트에서 이벤트 처리기를 명시 적으로 바인딩 해제해야합니다. bindTounbindFromAll 기능에 특정주의를 기울이고, 다른 SO 질문이 답변을 참조하십시오 :

Backbone.js : repopulate or recreate the view?

+0

감사합니다. Derick, 귀하의 바인딩 기술에 관한 Los Techies에 대한 기사를 실제로 읽었지만, 이 더 간단 할 것으로 기대하고있었습니다. 나는 이것을 지금 시도하고있다. – pedalpete

+0

아쉽게도 더 간단한 것은 없습니다. Backbone은 이에 대한 손쉬운 접근 방식을 취하고 스스로 발을 쏠 수 있거나 추가 코드를 직접 작성할 수 있습니다. FWIW : https://github.com/derickbailey/backbone.marionette/blob/master/backbone.marionette.js#L463-488 거기에서 코드를 복사하여 붙여 넣고 _.extend를 사용하여 자신의 콘텐츠에 믹스합니다. . :) –

0

해보십시오 MyApp.Views.Hours.remove을(). 그러면 dom에서 뷰와 해당 요소가 제거되고 프로세스의 모든 이벤트 핸들러가 분리됩니다. 그런 다음 시간보기를 다시 작성하십시오.

+0

그것은 내 둥지를 쓰는 방식 때문일 수 있지만,이 또한 내가 그것을 제거한 후에 다른 아이를 추가하는 것을 허락하지 않았습니다. 나는 그것을 일찍 시도했다. – pedalpete