Pertanyaan:
Bagaimana memanggil beberapa fungsi dalam satu @ klik? (alias v-on:click
)?
Saya mencoba
Fungsi perpecahan dengan titik koma:
<div @click="fn1('foo');fn2('bar')"> </div>
;Menggunakan beberapa
@click
:<div @click="fn1('foo')" @click="fn2('bar')"> </div>
;
tapi bagaimana melakukannya dengan benar?
PS : Yang pasti selalu bisa
<div v-on:click="fn3('foo', 'bar')"> </div>
function fn3 (args) {
fn1(args);
fn2(args);
}
Tapi terkadang ini tidak bagus.
javascript
vue.js
Sergei Panfilov
sumber
sumber
v-on:click="[click1($event), click2($event)]"
. Saya menjawabnya di bawah :)Jawaban:
Di Vue 2.3 dan yang lebih baru, Anda dapat melakukan ini:
sumber
event
melaluiv-on:click="firstFunction; secondFunction;"
tidak akan bekerja$event
<div @click="firstFunction($event); secondFunction($event);
Et voilà :)Pertama-tama Anda dapat menggunakan notasi pendek,
@click
bukanv-on:click
untuk tujuan keterbacaan.Kedua Anda bisa menggunakan event handler klik yang memanggil fungsi / metode lain sebagai @Tushar yang disebutkan dalam komentarnya di atas, jadi Anda akan mendapatkan sesuatu seperti ini:
sumber
Jika Anda menginginkan sesuatu yang sedikit lebih mudah dibaca, Anda dapat mencoba ini:
Bagi saya, solusi ini lebih terasa seperti harapan Vue yang Anda nikmati
sumber
e.stopPropagate()
diclick1($event)
sehinggaclick2(event)
tidak akan ditangani?click1($event)
danclick2($event)
hanya 2 fungsi berbeda untuk acara yang sama bukan 2 acara berbeda.e.stopPropagate()
tidak akan melakukan apa pun untukclick2()
. Harapan yang masuk akal :)click2($event)
memicu?untuk menambahkan fungsi anomim untuk melakukan itu mungkin merupakan alternatif:
sumber
$event
sebagai arg, Anda harus meneruskannya sebagai parameter ke fungsi baru Anda untuk digunakan di dalamnya. Misalnya.($event) => {func1($event); func2('x');}
Pisahkan menjadi beberapa bagian.
Di barisan:
ATAU: Melalui fungsi komposit:
sumber
Cara sederhana untuk melakukan v-on: click = "firstFunction (); secondFunction ();"
sumber
Ini berfungsi untuk saya ketika Anda perlu membuka kotak dialog lain dengan mengklik tombol di dalam kotak dialog dan juga menutup yang ini. Teruskan nilai sebagai params dengan pemisah koma.
sumber
di Vue 2.5.1 untuk karya tombol
sumber
The
Vue
event handling hanya memungkinkan untuk panggilan fungsi tunggal. Jika Anda perlu melakukan lebih dari satu, Anda dapat melakukan pembungkus yang mencakup keduanya:EDIT
Opsi lainnya adalah mengedit penangan pertama agar memiliki panggilan balik dan meneruskan penangan kedua.
sumber
Html:
JS:
sumber
Saya akan menambahkan, bahwa Anda juga dapat menggunakan ini untuk memanggil beberapa emit atau metode atau keduanya bersama-sama dengan memisahkan dengan; titik koma
sumber
Anda bisa, bagaimanapun, melakukan sesuatu seperti ini:
ya, dengan menggunakan acara html onclick asli.
sumber