Questão:
Como chamar várias funções em um único @click? (também conhecido como v-on:click
)?
eu tentei
As funções rachadas com um ponto e vírgula:
<div @click="fn1('foo');fn2('bar')"> </div>
;Use vários
@click
:<div @click="fn1('foo')" @click="fn2('bar')"> </div>
;
mas como fazer isso corretamente?
PS : Com certeza sempre posso fazer
<div v-on:click="fn3('foo', 'bar')"> </div>
function fn3 (args) {
fn1(args);
fn2(args);
}
Mas às vezes isso não é legal.
javascript
vue.js
Sergei Panfilov
fonte
fonte
v-on:click="[click1($event), click2($event)]"
. Eu respondi abaixo :)Respostas:
No Vue 2.3 e superior, você pode fazer isso:
fonte
event
através dev-on:click="firstFunction; secondFunction;"
não funcionará$event
<div @click="firstFunction($event); secondFunction($event);
Et voilà :)Em primeiro lugar, você pode usar a notação curta em
@click
vez dev-on:click
para fins de legibilidade.Segundo, você pode usar um manipulador de eventos de clique que chama outras funções / métodos como @Tushar mencionou em seu comentário acima, então você acaba com algo assim:
fonte
Se você quiser algo um pouco mais legível, pode tentar isto:
Para mim, essa solução parece mais Vue, espero que você goste
fonte
e.stopPropagate()
ligarclick1($event)
para queclick2(event)
não seja atendido?click1($event)
eclick2($event)
são apenas 2 funções diferentes para o mesmo evento e não 2 eventos diferentes.e.stopPropagate()
não fará nada paraclick2()
. Espero que faça sentido :)click2($event)
de disparar?adicionar uma função anônima para fazer isso pode ser uma alternativa:
fonte
$event
como um argumento, você precisará passá-la como um parâmetro para sua nova função a ser usada dentro dela. Por exemplo.($event) => {func1($event); func2('x');}
Separe em pedaços.
Na linha:
OU: Por meio de uma função composta:
fonte
Esta maneira simples de fazer v-on: click = "firstFunction (); secondFunction ();"
fonte
Isso funciona para mim quando você precisa abrir outra caixa de diálogo clicando em um botão dentro de uma caixa de diálogo e também fechar esta. Passe os valores como parâmetros com um separador de vírgula.
fonte
no Vue 2.5.1 para funções de botão
fonte
O
Vue
tratamento de eventos permite apenas chamadas de função única. Se precisar fazer vários, você pode criar um wrapper que inclua ambos:EDITAR
Outra opção é editar o primeiro manipulador para ter um retorno de chamada e passar o segundo.
fonte
Html:
JS:
fonte
Eu acrescentaria que você também pode usar isso para chamar vários emits ou métodos, ou ambos juntos, separando com; ponto e vírgula
fonte
você pode, no entanto, fazer algo assim:
sim, usando evento html onclick nativo.
fonte