2013-02-21 3 views
1

한 페이지 웹 응용 프로그램을 구축 중입니다. 중첩 된 Backbone.View를 동적으로 생성해야합니다.DOM 트리에 이벤트/콜백은 어디에 저장되어 있습니까?

일반적으로 빈 jQuery를 생성하고 div를 추가 한 다음 이벤트 바인딩을 완료 한 다음 jQuery 객체를 반환하십시오.

object.html()을 추가하는 대신 jQuery 객체를 추가하면 해당 객체에 바인딩 된 이벤트가 유지됩니다.

이 jQuery 객체의이 이벤트/콜백은 어디에 저장되어 있으며 jQuery 객체를 삽입 할 때이 콜백이 DOM 트리에 전달되는 방법은 혼란 스럽습니다.

또한 DOM 조작 후 콜백을 다시 바인딩해야하는 조건을 알고 싶습니다.

감사합니다.

답변

0

Backbone 이벤트 개체는 기본적으로 이벤트 바인딩을 수행 할 때 매우 유용합니다. 그걸 쓸 수 없니? 그것은 훨씬 더 표준적인 접근 방식입니다. 귀하의 접근 방식은 표준이 아니므로 혼란을 야기 할 수 있습니다. 동적 상태를 유지해야하는 경우 convention explained on the Backbone website을 사용하여 이벤트를 첨부 할 수 있습니다.

DOM을 제거하거나 다시 추가 할 경우 이벤트를 리 바인드해야합니다. 보기의 작동 방식에 따라 모델 변경으로 인해 화면 갱신이 트리거되는 경우 이벤트를 리 바인드해야 할 수도 있습니다. Backbone 이벤트 해시가이를 처리합니다.

jQuery는 실제로 .data('events')에 DOM 노드에 연결된 이벤트를 유지했지만 going away with 1.8 (여전히 얻을 수 있지만 디버깅 이외의 용도로는 사용되지 않아야 함)입니다. 일반적으로 이벤트에 대한 DOM을 검사 할 수 없습니다. 이것은 디버깅을 매우 어렵게 만듭니다. jQuery를 사용하여 이벤트를 첨부하면 unjified jQuery를 사용할 수 있고 이벤트를 전달하는 곳에서 휴식을 취할 수 있으므로 디버깅이 쉬워집니다. Chrome은 이벤트 문제 디버깅에도 좋습니다. 그러나 이상적으로 당신은 당신이 그것을 갖기 전에 그것을 막고 싶습니다. 더 많은 툴이 나오기를 바라고 있습니다. (테스트중인 이벤트를 모니터하고 디버깅 할 수있는 PhantomJS에 대한 이벤트 플러그인을 말하는 것과 같습니다.)

0

구현 세부 사항으로 $('some-selector')에 바인드 된 이벤트는
$('some-selector').data('events')에 저장됩니다.

jQuery 사용자로서, 당신이 그것에 대해 걱정할 필요가 없습니다.

관련 문제