2013-04-05 11 views
5

Sto creando un oggetto utilizzando gli eventi un po 'di spina dorsale e sottolineano come segue:Backbone Eventi: registrazione di tutti gli eventi quando essi vengono attivati ​​

var appEvents = _.extend({}, Backbone.Events); 

Sto quindi cercando di creare una funzione che consolarsi. registra tutti gli eventi attivati ​​su questo oggetto, indipendentemente da dove, come o che tipo di ascoltatori ha, ma non sono sicuro di come lo farei. Sto ancora sperimentando con Backbone.

Penso che usare il metodo listenTo sia la strada da percorrere ... ma ancora una volta, non sono sicuro di come lo implementerei.

+0

Puoi provare a riformulare cosa stai cercando di fare per favore? Perché Backbone.Events non dovrebbe essere usato come oggetto. Definisce solo un metodo per estendere tutti gli altri oggetti (Router, View, Collection, Model). – Loamhoof

+0

Mi dispiace, penso di non aver usato la dicitura giusta. 'appEvents' funziona correttamente. Posso fare 'appEvents.trigger ('event')' bene. Quello che sto cercando di fare è vedere in qualche modo nella mia console quegli eventi quando vengono attivati. Quindi dire che ho un evento chiamato "openModal" che viene attivato quando clicco su un link, mi piacerebbe avere un 'console.log' con il nome" openModal "quando clicco su quel collegamento che funziona in qualche modo automaticamente quando' appEvents. trigger' è chiamato. –

risposta

29

Si può semplicemente utilizzare speciale all evento di Backbone:

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

Vedi il suo commento, non sta ascoltando, si sta innescando. – Loamhoof

+0

Questo! Grazie! Sapevo che dovrebbe essere abbastanza semplice. –

+4

Enrique, si prega di contrassegnare questa risposta come corretta, in base al tuo ultimo commento. – djmitche

0

Override la funzione trigger poi.

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

Ma trovo ancora l'intera storia strana (di nuovo, questa è solo la mia opinione).

+0

Scusa se ti ho confuso (ancora una volta). Ho usato il trigger come esempio, ma stavo cercando di vedere eventuali modifiche su appEvents. @mVChr capito. GRAZIE! –

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", "событие"); 
Problemi correlati