2012-04-06 12 views
19

Una breve domanda sugli eventi in Backbone: esiste un modo per definire un insieme di eventi globali che possono essere riutilizzati in diverse viste?Eventi globali Backbone.js

Ad esempio, supponiamo di avere più viste visualizzate sulla pagina. Ogni vista ha un pulsante che espanderà un menu. Ci sono anche molti altri elementi ed eventi generici. Senza inserire questa logica di eventi in ciascuna vista, esiste un modo in cui ciascuna di queste viste potrebbe ereditare o estrarre questi eventi da una definizione di eventi globali? Farebbe sicuramente risparmiare tempo ed essere una soluzione molto più pulita definendo questi eventi generici in un unico posto.

Ho visto termini come Aggregatore eventi e Motivi di fabbrica gettato in giro, ma non sono sicuro dell'approccio migliore (o se otterranno ciò che cerco).

risposta

51

In pratica stai descrivendo un aggregatore di eventi o un dispatcher, sì. Ho un paio di articoli sulla costruzione e il loro utilizzo con Backbone:

http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

http://lostechies.com/derickbailey/2012/04/03/revisiting-the-backbone-event-aggregator-lessons-learned/

e ci sono molti più articoli in tutto il web per fare lo stesso con Backbone e altro pub/sub librerie.

E 'abbastanza semplice da fare in Backbone:


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

e ora avete un oggetto vent che può essere utilizzato come un aggregatore evento in tutta di vista dell'applicazione e altri oggetti.


vent.on("some:event", function(){ 
    console.log("some event was fired"); 
}); 

vent.trigger("some:event"); 
+3

Ho trovato il tuo post eccellente su di esso e ho pensato che fosse la soluzione più elegante (il più rivisitato)! Ho seguito il tuo articolo e funziona perfettamente - ottimo articolo a proposito. Tuttavia, questo significa che devo specificare il gruppo di eventi in ciascuna vista (che semplicemente attivano gli eventi necessari). Poiché ciascuno di questi gruppi di Visualizzazioni svolge sempre la stessa attività (ad esempio un pulsante di aggiunta o modifica), esiste un modo per semplificare ulteriormente le visualizzazioni? – crawf

+0

FYI, sembra che il tuo dominio lostechies.com stia reindirizzando automaticamente a https, ma sta cercando di caricare i frammenti di codice GitHub su http e di essere bloccato. –

Problemi correlati