Estoy tratando de activar la foo()
función con el @click
pero, como puede ver, necesito presionar el botón de radio dos veces para activar el evento correctamente. Solo capture el valor la segunda vez que presione ...
Quiero disparar el evento sin @click
solo disparar el evento cuando v-model
(srStatus) cambia.
aquí está mi violín:
javascript
events
vue.js
jnieto
fuente
fuente
foo()
es realizar cambios que no sean de plantilla, use awatcher
Respuestas:
Esto sucede porque su
click
controlador dispara antes de que cambie el valor del botón de opción. En su lugar, debes escuchar elchange
evento:Además, asegúrese de que realmente quiere llamar
foo()
listo ... parece que tal vez no quiera hacer eso.fuente
En realidad, puede simplificar esto eliminando las
v-on
directivas:Y usa el
watch
método para escuchar el cambio:fuente
Vue2: si solo desea detectar cambios en el desenfoque de entrada (por ejemplo, después de presionar enter o hacer clic en otro lugar), hágalo (más información aquí )
Si desea detectar cambios de un solo carácter (durante la escritura del usuario) utilice
También puede utilizar
@keyup
y@input
eventos. Si desea pasar parámetros adicionales, utilice en la plantilla, por ejemplo@keyDown="foo($event, param1, param2)"
. Comparación a continuación (versión editable aquí )Mostrar fragmento de código
fuente
@keyDown
jsfiddle.net/rLzm0f1q (sin embargo, no digo que@input
sea bueno o malo)Deberías usar
@input
:@input
se dispara cuando el usuario cambia el valor de entrada.@change
se dispara cuando el usuario cambia el valor y desenfoca la entrada (por ejemplo, hace clic en algún lugar fuera)Puede ver la diferencia aquí: https://jsfiddle.net/posva/oqe9e8pb/
fuente
Solo para agregar a la respuesta correcta anterior, en Vue.JS v1.0 puede escribir
Entonces, en este ejemplo sería
Ver: http://v1.vuejs.org/guide/syntax.html#Arguments
fuente