2011-09-09 4 views

답변

5

이렇게하려면 Backbone.Events 'trigger'메서드를 재정의 한 다음 원래 메서드로 다시 호출하기 전에 원하는 코드를 호출해야합니다.

var originalTrigger = Backbone.Events.trigger; 
Backbone.Events.trigger = function(){ 
    console.log("Event Triggered:"); 
    console.log(arguments.join(", ")); 
    originalTrigger.apply(this, arguments); 
} 

내가 오프 손 모르겠어요,하지만 당신은 적용 호출 할 실제 배열에 인수를 슬라이스 할 수 있습니다 :

이 같은 작업을해야합니다

originalTrigger.apply(this, Array.prototype.slice.call(arguments)); 
+0

이 Hrrm, 내 코드에서는이 처리되지 않는 형식 오류가 발생합니다 : 부동산의 '트리거'정의의를 읽을 수 없습니다, Backbone.Events.trigger하지만 존재한다. @Derick – fancy

+0

코드를 편집했습니다 ... 지금 작동해야합니다. 여전히 100 % 확실하지는 않습니다. 나는 기본적으로 내 테스트에서, tho –

+0

굉장, 고마워, 그리고 당신은 'Array.prototype.slice.call (arguments)'해야합니까'arguments.join (",")'대신'arguments' 로그 – fancy

-1

당신을 이 경우 _.wrap 메소드를 사용할 수 있습니다.

여기 내 coffeescript 코드입니다.

Backbone.Events.trigger = _.wrap(Backbone.Events.trigger, (fun) -> 
    args = _.toArray(arguments).slice(1,) 
    console.log.call console, _.flatten(['trigger', args]) 
    fun() 
) 
관련 문제