Estou tentando disparar a foo()
função com o @click
mas, como você pode ver, preciso pressionar o botão de opção duas vezes para disparar o evento corretamente. Capture o valor apenas na segunda vez que você pressionar ...
Quero disparar o evento sem @click
apenas disparar o evento quando v-model
(srStatus) for alterado.
aqui está meu violino:
javascript
events
vue.js
Jnieto
fonte
fonte
foo()
for fazer alterações não relacionadas ao modelo, use umwatcher
Respostas:
Isso acontece porque seu
click
manipulador dispara antes que o valor do botão de opção seja alterado. Emchange
vez disso, você precisa ouvir o evento:Além disso, certifique-se de que realmente deseja ligar
foo()
pronto ... parece que talvez você não queira realmente fazer isso.fonte
Você pode realmente simplificar isso removendo as
v-on
diretivas:E use o
watch
método para ouvir a mudança:fonte
Vue2: se você só deseja detectar mudanças no desfoque de entrada (por exemplo, depois de pressionar enter ou clicar em outro lugar), faça (mais informações aqui )
Se você quiser detectar alterações de um único caractere (durante a digitação do usuário), use
Você também pode usar
@keyup
e@input
eventos. Se você deseja passar parâmetros adicionais, use no modelo, por exemplo@keyDown="foo($event, param1, param2)"
. Comparação abaixo (versão editável aqui )Exibir trecho de código
fonte
@keyDown
jsfiddle.net/rLzm0f1q (no entanto, não digo que@input
seja bom ou ruim)Você deve usar
@input
:@input
dispara quando o usuário altera o valor de entrada.@change
dispara quando o usuário altera o valor e desfoca a entrada (por exemplo, clica em algum lugar externo)Você pode ver a diferença aqui: https://jsfiddle.net/posva/oqe9e8pb/
fonte
Apenas para adicionar a resposta correta acima, no Vue.JS v1.0 você pode escrever
Então, neste exemplo, seria
Veja: http://v1.vuejs.org/guide/syntax.html#Arguments
fonte