Ho una vista principale e all'interno di quella vista principale ho un'altra vista che viene creata quando faccio clic su un pulsante. C'è un modo per ascoltare un evento personalizzato nella vista genitore per un evento che viene generato dalla vista figlio. Ho provato a farlo attraverso la proprietà el usando trigger jQuery ma non ha funzionato.attiva un evento da una vista a un'altra in backbone
risposta
Ya, nessun problema ... ti consigliamo di utilizzare il modello "Event Aggregator". E '1 riga di codice nel Backbone:
var eventAgg = _.extend({}, Backbone.Events);
Ora si può attivare/legano a eventi da questo oggetto, ovunque nella vostra app, e hanno le diverse parti della vostra applicazione comunicano tra loro in modo disaccoppiato .
Io uso questo molto!
Ho anche blogged più qui: http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/
+1. Faccio un ulteriore passo avanti e inserisco l'aggregatore di eventi in ogni vista: 'Backbone.View.prototype.eventAggregator = _.extend ({}, Backbone.Events);'. Facendo ciò, ogni vista ottiene l'aggregatore di eventi ogni volta che viene costruita. –
Il tuo aggregatore di eventi non è semplicemente un "modello di stato di visualizzazione" semplificato? 'ViewModel = new Backbone.Model()' non sarebbe più elegante? Almeno in questo modo le viste più disparate potrebbero legarsi a * modifiche * nel modello di vista, piuttosto che eventi arbitrari. Ad esempio 'viewModel.bind ('cambia: selectedFoo', aView.render)' vs 'eventAgg.bind ('selectedFooChanged', aView.render)'. Pensieri? –
@crescent fresh - no. un modello ha un significato semantico, essendo una rappresentazione statica di qualche entità. ha attributi e metodi che manipolano quegli attributi. un aggregatore di eventi è un oggetto stateless che coordina solo parti del sistema, attraverso l'uso di eventi, consentendo un'architettura più disaccoppiata. http://martinfowler.com/eaaDev/EventAggregator.html –
Ecco un altro approccio, che potrebbe essere più intuitivo per le persone che sono alla ricerca di un modo semplice per "bolla" eventi fino da una vista del bambino ad una vista primaria :
https://github.com/dgbeck/backbone.courier
V'è una certa discussione nel readme su come si confronta con gli aggregatori di eventi.
Il rolling del proprio "aggregatore di eventi" o mediatore o pubub (come facile come descritto sopra) non è necessario poiché Backbone si mescola nell'oggetto Eventi direttamente all'oggetto Backbone nel loro spazio dei nomi. Ecco uno link per il codice sorgente e la loro documentazione sull'implementazione.
Consentire all'oggetto Backbone di servire come un bus di eventi globale, per le persone che desiderano "pubsub" globali in un luogo conveniente.
- 1. Backbone - Perché un insieme.reset non attiva un evento del modello?
- 2. Come si aggiunge un evento di ridimensionamento alla finestra in una vista utilizzando Backbone?
- 3. Rileva evento tocco su una vista trascinato da un'altra vista
- 4. Backbone aggiungi evento
- 5. C'è un evento Javascript che si attiva quando un elemento HTML scorre in vista?
- 6. Come si attiva un evento personalizzato da un controllo utente?
- 7. Backbone rebinding eventi su una vista
- 8. Ereditarietà vista backbone
- 9. attiva un evento "incolla" in Javascript
- 10. Collegamento di una vista backbone a html già renderer
- 11. Chiamare la funzione vista da un'altra vista - Backbone
- 12. Backbone innescare due metodi in un unico evento
- 13. Creazione di un evento che attiva un secondo evento
- 14. Leggi dati da un modulo in backbone
- 15. Backbone js ri-rappresentazione lascia l'eventless vista
- 16. Attiva un evento quando l'utente si allontana
- 17. Delega di eventi ad una vista padre in Backbone
- 18. history.pushState non attiva evento 'popstate'
- 19. Evento click backbone non attivato in visualizzazione dinamica
- 20. call route all'interno di una vista in Backbone
- 21. Backbone evento scroll non sparare
- 22. Attiva un evento quando viene presentata una scheda NFC
- 23. Backbone - È possibile associare un evento di modifica a un modello, ad eccezione di una proprietà?
- 24. WebDriver: modifica evento non attiva
- 25. Il router backbone non attiva gli eventi
- 26. backbone andare a un'altra pagina
- 27. Creazione di una vista backbone per una collezione
- 28. Modelli di due modelli in una vista: Backbone/Marionette
- 29. Attiva l'azione predefinita di un evento
- 30. Passaggio da una vista elenco a una vista griglia
Un piccolo esempio di codice potrebbe essere d'aiuto. – erturne