2013-04-05 1 views
5

를 트리거 할 때 모든 이벤트 로깅을 강조. 로그하는 모든 이벤트 및이 객체에 트리거 된 모든 이벤트 (리스너의 위치, 방법 또는 방법에 관계없이)를 표시하지만, 내가 어떻게 그럴 수 있는지 확실하지 않습니다. 나는 아직도 백본을 실험 중이다.백본 이벤트 다음과 같이 그들은 내가 이벤트가 백본의 비트를 사용하여 객체 만드는거야

나는 listenTo 메소드를 사용하는 것이 길이다라고 생각하지만 ... 어떻게 다시 구현할 지 확신하지 못한다.

appEvents.on("all", function(eventName){ 
    console.log(eventName + ' was triggered!'); 
}); 
+0

제발 당신이하려는 것을 다시 말해보십시오. Backbone.Events는 실제로 객체로 사용되지 않기 때문에. 다른 모든 객체 (Router, View, Collection, Model)를 확장하는 메소드 만 정의합니다. – Loamhoof

+0

죄송합니다. 올바른 문구를 사용하지 않았다고 생각합니다. 'appEvents'가 제대로 작동하고 있습니다. 'appEvents.trigger ('event')'할 수 있습니다. 내가하려고하는 일은 어떻게하면 내 콘솔에서 트리거되었을 때 그 이벤트를 보는 것입니다. 그래서 링크를 클릭 할 때 "openModal"이라는 이벤트가 발생했다는 것을 말하면,'appEvents '가있을 때 자동으로 작동하는 링크를 클릭하면 "openModal"이라는 이름으로'console.log'를 갖고 싶습니다. 방아쇠 '가 호출됩니다. –

답변

29

당신은 백본의 특별 all 이벤트를 사용할 수 있습니다.

var trigger = appEvents.trigger; 
appEvents.trigger = function(name) { 
    console.log('Event', name, 'triggered.'); 
    trigger.apply(this, arguments); 
}; 

그러나 나는 여전히 이상한 이야기를 발견합니다.

+0

그의 의견을 참조하십시오. 듣지 않고 있습니다. – Loamhoof

+0

This! 고맙습니다! 나는 그것이 충분히 간단해야한다는 것을 알고 있었다. –

+4

엔리케, 마지막 댓글을 기반으로이 답변에 올 바르게 표시하십시오. – djmitche

0

재정의 다음 트리거 기능 :

+0

죄송합니다. 예를 들어 방아쇠를 사용했지만 appEvents의 변경 사항을 확인하려고했습니다. @mVChr 그것을 얻었다. 고맙습니다! –

0
var object = {}; 

_.extend(object, Backbone.Events); 

object.on("alert:param1", function(msg) { 
    alert("Сработало " + msg); 
}); 


object.on("alert:param2", function(msg) { 
    alert("Сработало " + msg); 
}); 



object.on("all", function(eventName) { 
    console.log(eventName); 
}); 
object.trigger("alert:param2", "событие"); 
object.trigger("alert:param1", "событие"); 
관련 문제