Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

113
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!