Si almaceno vista en window.myView
variables, hacen que, a continuación, llamar a la consola en javascript:¿Por qué los eventos de Backbone al reemplazar html no funcionan?
$('#container').html('')
y luego llamar a:
$('#container').html(window.myView.$el)
eventos Bound dejarán de funcionar.
estoy bastante seguro de que se supone que es así, pero:
- exactamente por qué funciona de esta manera?
- cómo volver a renderizar una subparte de vista sin perder enlaces de eventos?
- ¿Por qué llamar a
myView.render()
no perderá enlaces de eventos?
Actualización:
encontrados this artículo. ¿Esa es la razón?
Asegúrese de que jQuery no está descargando sus eventos cuando no se quiere que
Si usted está construyendo una aplicación donde se crean los puntos de vista sobre la marcha y adjuntar/elimine a la que dom, puede tener un problema Cada vez que eliminas una vista del dom, jQuery descarga todos los eventos. Por lo tanto, no puede tener una referencia a una vista y eliminarla del dom y luego volver a adjuntarla más tarde. Todos sus eventos habrían sido descargados. Si desea mantener las vistas, una mejor idea es ocultarlas mediante la pantalla: ninguna. Sin embargo, no debe abusar de esto y reciclar vistas que no va a usar por un tiempo (y evitar pérdidas de memoria).
Gracias por esta pregunta. Tuve un problema similar con Spine y no pude entender qué estaba pasando. –