Tengo una vista principal y dentro de esa vista principal tengo otra vista que se crea cuando hago clic en un botón. ¿Hay alguna manera de escuchar un evento personalizado en la vista principal para un evento que se dispara desde la vista secundaria? Intenté hacerlo a través de la propiedad el usando el activador jQuery, pero eso no funcionó.desencadenar un evento de una vista a otra en la red troncal
Respuesta
Ya, no hay problema ... querrá usar el patrón "Event Aggregator". Es 1 línea de código en Backbone:
var eventAgg = _.extend({}, Backbone.Events);
Ahora puede usted activar/vinculación a eventos de este objeto, en todas partes en su aplicación, y tienen las diferentes partes de su aplicación se comunican entre sí de una manera desacoplada .
¡Utilizo esto MUCHO!
también blogged más sobre él aquí: http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/
+1. Doy un paso más e inyecto el agregador de eventos en cada vista: 'Backbone.View.prototype.eventAggregator = _.extend ({}, Backbone.Events);'. Al hacer eso, cada vista obtiene el agregador de eventos cada vez que se construye. –
¿No es su agregador de eventos simplemente un "modelo de estado de vista" simplificado? ¿No vería 'viewModel = new Backbone.Model()' por más elegante? Al menos de esa manera, las vistas dispares podrían vincularse a * cambios * en el modelo de vista, en lugar de eventos arbitrarios. Ej 'viewModel.bind ('change: selectedFoo', aView.render)' vs 'eventAgg.bind ('selectedFooChanged', aView.render)'. ¿Pensamientos? –
@crescent fresh - no. un modelo tiene un significado semántico, siendo una representación con estado de alguna entidad. tiene atributos y métodos que manipulan esos atributos. un agregador de eventos es un objeto sin estado que solo coordina partes del sistema, a través del uso de eventos, lo que permite una arquitectura más desacoplada. http://martinfowler.com/eaaDev/EventAggregator.html –
Aquí hay otro enfoque, que podría ser más intuitivo para las personas que están buscando una manera simple de "burbuja" eventos arriba de un niño, vista a una vista padre :
https://github.com/dgbeck/backbone.courier
Hay una cierta discusión en el readme cómo se compara con los agregadores de eventos.
No es necesario rolar su propio "agregador de eventos" o mediador o pubsub (tan fácil como se describe arriba) ya que el Backbone mezcla el objeto Events directamente al objeto Backbone en su espacio de nombres. Aquí hay un link al código fuente y su documentación sobre la implementación.
Permita que el objeto Backbone sirva como un bus de eventos global, para las personas que desean un "pubsub" global en un lugar conveniente.
- 1. Jerarquización de la vista de red troncal
- 2. Recreación de una vista eliminada en la red troncal js
- 3. Enlazar una vista de red troncal a html ya representador
- 4. Eventos de redireccionamiento de red troncal en una vista
- 5. Creación de una vista de red troncal para una colección
- 6. Vista de red troncal, inicializar y renderizar
- 7. Evento de restablecimiento de red troncal en la colección
- 8. plantilla de red troncal anidada en otra plantilla
- 9. ¿Cómo agrego un evento de cambio de tamaño a un artículo en la red troncal?
- 10. ¿Cómo internacionalizar una vista de manillar + red troncal?
- 11. Filtrado de red troncal
- 12. ¿Cómo conectar una Vista de red troncal a una plantilla de barra de meteorito?
- 13. vista de red troncal + visualización de google api
- 14. ¿La red troncal activa .add cuando se recolecta una colección?
- 15. los eventos de la vista de red troncal no funcionan después de volver a renderizar
- 16. Pasando argumentos a eventos en la red troncal
- 17. Cómo actualizar una página en una aplicación de red troncal
- 18. ¿Me estoy desviando de MVC si tengo una Vista de red troncal sin un modelo?
- 19. ¿Cómo vincular eventos a DOM después de la función de inicialización en la red troncal?
- 20. Patrón para administrar vistas en la red troncal
- 21. desencadenar un evento "pegar" en Javascript
- 22. Cómo borrar la red troncal localstorage
- 23. No puedo probar la visibilidad de elementos representados en mi vista de red troncal
- 24. ¿Cómo especifico varias URL en una aplicación de red troncal?
- 25. buscar en el modelo de red troncal con id
- 26. Sobrescribir la función de análisis de la red troncal
- 27. Validación del modelo de red troncal
- 28. ¿Cómo desencadenar/vincular eventos personalizados en las vistas de Backbone.js?
- 29. SVG no se representa correctamente como una vista de red troncal
- 30. Passport.js: accediendo al usuario al utilizar la red troncal
Un pequeño código de ejemplo ayudaría. – erturne