2013-04-15 4 views
0

폴더를 나타내는 뷰가 있습니다. 이 하위 폴더 뷰가 생성하는 하위 뷰가 여러 개 있는데, 각 하위 뷰는 해당 폴더의 고유 한 축소판을 나타냅니다. 각각의 서브 뷰의 render 메소드는 여러 번 호출됩니다 (3). 보기의 렌더링 메서드가 호출되는 방법을 찾는 방법이 있습니까? 예를 들어, 모델 메타 데이터가 변경되면 트리거 이벤트를 렌더링 할 수있는 다른 장소가있다. 그것은 엄청난 난장판이되었고, 백본보기를 디버그하여 정확히 어떻게 렌더링 방법을 트리거 하는지를 알 수있는 방법을 찾고 있습니다.백본 뷰 렌더링 함수가 여러 번 호출되었습니다.

+0

트리거되는 이벤트를 추적하기 위해'trigger' 메소드를 대체 할 수 있습니다. – Loamhoof

+0

몇 가지 예를 들어 주시겠습니까? – sublime

답변

1

이다 나는 항상 디버그 이벤트 방법 :

view.on('all', function(eventName){ 
    console.log('Name of View: ' + eventName); 
}); 

당신은 뷰, 모델이나 컬렉션에이 작업을 수행 할 수 있습니다.

예를는 : http://jsfiddle.net/CoryDanielson/phw4t/6/

나는 백본 실제로 수행 할 방법을 시뮬레이션하기 위해 수동으로 requestsync 방법을 추가했다. rendered 이벤트는 맞춤 설정이므로 아무 것도 수신하지 않습니다. 어떻게/언제 일어날 지 보여 주기만하면됩니다.

0

backbone.debug을 시도해 볼 수 있습니다. 어떤 사건이 해고되는지에 대한 통찰력을 제공해야합니다.

1

요청한대로 다음은 trigger 메서드를 재정의하는 방법의 예입니다. 모든 유형의 클래스 (Model, View, Collection, Router)에 대해이를 오버라이드해야합니다.

var trigger = Backbone.Model.prototype.trigger; 
Backbone.Model.prototype.trigger = Backbone.View.prototype.trigger = Backbone.Collection.prototype.trigger = Backbone.Router.prototype.trigger = function(name) { 
    trigger.apply(this, arguments); 
    console.log(this, 'triggered the event', name, '.'). 
} 

각 메소드를 개별적으로 대체하여 로그에 오브젝트 유형을 추가하면 더 구체적 일 수 있습니다. 그러나 당신은 일반적인 생각을 가지고 있습니다.

관련 문제