How to call multiple functions with @click in vue?

Sergei Panfilov picture Sergei Panfilov · Aug 3, 2016 · Viewed 141.6k times · Source

Question:

How to call multiple functions in a single @click? (aka v-on:click)?

I tried

  • Split functions with a semicolon: <div @click="fn1('foo');fn2('bar')"> </div>;

  • Use several @click: <div @click="fn1('foo')" @click="fn2('bar')"> </div>;

but how to do it properly?

P.S.: For sure I always can do

<div v-on:click="fn3('foo', 'bar')"> </div>

function fn3 (args) { 
  fn1(args);
  fn2(args);
}

But sometimes this isn't nice.

Answer

Stuart Cusack picture Stuart Cusack · May 25, 2017

On Vue 2.3 and above you can do this:

<div v-on:click="firstFunction(); secondFunction();"></div>
// or
<div @click="firstFunction(); secondFunction();"></div>