Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

115
Vistas
Enlace de eventos de Backbone.js

Estoy usando Backbone.js y tengo un elemento de interfaz de usuario de tipo de control segmentado para la vista de cada modelo. Cada uno está formado por una ul con unos pocos elementos li. Quiero vincular un evento de modo que cuando se haga clic en uno de estos elementos, pueda determinar en cuál se ha hecho clic y actualizar el modelo con el valor apropiado.

El problema es que Backbone vincula los eventos (estos están en el hash de eventos de la vista) de modo que "esto" en la función de devolución de llamada se refiere a la vista, no a los elementos li. Esto significa que no puedo determinar en cuál de los varios elementos li se ha hecho clic. Si usé un enlace jQuery normal, puedo tener "esto" vinculado a los elementos li, pero ya no tengo un seguimiento del modelo, por lo que no puedo actualizarlo.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En mi opinión, el hábito de jQuery de configurar this para lo que sea conveniente en ese momento es un patrón bastante desagradable; afortunadamente, nunca tienes que confiar en él:

 onClick: function(e) { this; // Still the view instance (as it should be). e.target; // The element that was clicked. e.currentTarget; // The element that was bound by the click event. }

... Puede usar el target o el objetivo currentTarget del objeto de evento, según corresponda.

over 4 years ago · Santiago Trujillo Denunciar

0

No puedo entender por qué no puedo comentar sobre la respuesta de @jashkena arriba. Su método es correcto (¡gracias!) pero pensé en aclarar la situación: en su controlador de eventos, puede recuperar el elemento al que estaba vinculado el evento. El código troncal de muestra se vería así:

 MyView = Backbone.View.extend({ events: { 'click .item': 'handleClick' }, handleClick: function(e) { this; // The view instance e.target; // The element that was clicked e.currentTarget; // The element that was bound by the click event } });

Lo uso para configurar el texto predeterminado en todos mis campos de formulario... sí, todavía no me gusta mucho HTML5 :)

Editar: Por cierto, e.target es el elemento sin procesar. Deberá usar $(e.target) para obtener acceso a jQuery.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda