Pregunta:
¿Cómo llamar a múltiples funciones en un solo @click? (alias v-on:click
)?
Lo intenté
Dividir funciones con un punto y coma:
<div @click="fn1('foo');fn2('bar')"> </div>
;Utilizar varios
@click
:<div @click="fn1('foo')" @click="fn2('bar')"> </div>
;
pero ¿cómo hacerlo correctamente?
PD : seguro que siempre puedo hacer
<div v-on:click="fn3('foo', 'bar')"> </div>
function fn3 (args) {
fn1(args);
fn2(args);
}
Pero a veces esto no es agradable.
javascript
vue.js
Sergei Panfilov
fuente
fuente
v-on:click="[click1($event), click2($event)]"
. Lo respondí a continuación :)Respuestas:
En Vue 2.3 y superior puedes hacer esto:
fuente
event
a través dev-on:click="firstFunction; secondFunction;"
no funcionará$event
<div @click="firstFunction($event); secondFunction($event);
Et voilà :)En primer lugar, puede utilizar la notación corta en
@click
lugar dev-on:click
con fines de legibilidad.En segundo lugar, puede usar un controlador de eventos de clic que llame a otras funciones / métodos como @Tushar mencionó en su comentario anterior, por lo que terminará con algo como esto:
fuente
Si quieres algo un poco más legible, puedes probar esto:
Para mí, esta solución se siente más como Vue, espero que disfrutes
fuente
e.stopPropagate()
en laclick1($event)
manera queclick2(event)
solía ser manejado?click1($event)
yclick2($event)
son solo 2 funciones diferentes para el mismo evento, no 2 eventos diferentes.e.stopPropagate()
no haré nada porclick2()
. Espero que tenga sentido :)click2($event)
active?para agregar una función anónima para hacer eso puede ser una alternativa:
fuente
$event
un argumento, deberá pasarla como un parámetro a su nueva función para que se use dentro de ella. P.ej.($event) => {func1($event); func2('x');}
Separa en pedazos.
En línea:
O: A través de una función compuesta:
fuente
Esta forma simple de hacer v-on: click = "firstFunction (); secondFunction ();"
fuente
Esto funciona para mí cuando necesita abrir otro cuadro de diálogo haciendo clic en un botón dentro de un cuadro de diálogo y también cerrar este. Pase los valores como parámetros con un separador de coma.
fuente
en Vue 2.5.1 para trabajos de botón
fuente
El
Vue
manejo de eventos solo permite llamadas a funciones únicas. Si necesita hacer varios, puede hacer un contenedor que incluya ambos:EDITAR
Otra opción es editar el primer controlador para tener una devolución de llamada y pasar el segundo.
fuente
HTML:
JS:
fuente
Yo agregaría que también puede usar esto para llamar a múltiples emisiones o métodos o ambos juntos separando con; punto y coma
fuente
Sin embargo, puedes hacer algo como esto:
sí, mediante el uso del evento html nativo onclick.
fuente