[Vue]1つのv-onディレクティブに、複数のメソッドを仕込める件
はじめに
今回、1つのv-onディレクティブで、2つ以上のメソッド発火をしたいと考え、公式で方法を探したのですが、うまく見つけられなかったので、共有しておきます。
いきなり結論サンプル
See the Pen ディレクティブで複数のメソッドをあてる by riotam (@riotam4) on CodePen.
解説
短いコードなので、全文を転記してます。
<div id="app">
<button @click='onClick1(); onClick2()'>クリックしてね</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
new Vue({
el: "#app",
methods: {
onClick1() {
alert('onClick1 を検知');
},
onClick2() {
alert('onClick2 を検知');
}
}
})
簡単なコードなので、詳細の解説は割愛しますが、ポイントだけ次で共有します。
ポイント
ズバリ、HTML側の2行目にある、@click='onClick1(); onClick2()'
です。
v-onディレクティブの後ろの''
(または""
)の中に、メソッド名を;
で区切ると、両方のメソッドを呼び出せます。
ちなみに
;
ではなく,
でも同じ挙動を得られることがあります。
しかし、コードによっては、なぜかうまく挙動してくれないことがあり、挙動してくれない条件がよくわからないので、使う際は十分にご注意ください。
(というか、;
こっちを使っておく方が無難かと思います。)
注意点まとめ
- 通常v-onでメソッドを指定する場合と違い、
()
が必要
-
;
ではなく,
でも同じ挙動を得られることがあるが、コードによっては、なぜかうまく挙動してくれないことがあった
-
;
ではなくて、(空文字)
を入れると、画面の描画自体がされなくなり、エラー等も確認できない状態になる
-
# さいごに
今日は短めですが、この辺で。
最後までありがとうございました。
追記
()
が必要;
ではなく,
でも同じ挙動を得られることがあるが、コードによっては、なぜかうまく挙動してくれないことがあった;
ではなくて、(空文字)
を入れると、画面の描画自体がされなくなり、エラー等も確認できない状態になるこの記事のコメント欄で、@yd_nikuさんが非常にわかりやすく、完結に解説して下さっています。
ぜひそちらも参考にして頂けると、良いかと思います!
@yd_nikuさんありがとうございます!
Author And Source
この問題について([Vue]1つのv-onディレクティブに、複数のメソッドを仕込める件), 我々は、より多くの情報をここで見つけました https://qiita.com/pon_maeda/items/cae65e9e82e2dd871bab著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .