Vueはクリックを実装し、イベントオブジェクトとカスタムパラメータを同時に渡します。

Vueはクリックを実装し、イベントオブジェクトとカスタムパラメータを同時に渡します。

カスタムパラメータを渡すだけ

html

<div id="アプリ">
 <button @click="tm(123)">ddddd</button>
</div>

JSコード

新しいVue({
  el:'#app',
 方法:{
   tm:関数(e){
    コンソールログ(e);
  }
 }
})

イベントオブジェクトを渡すだけです

html

<div id="アプリ">
 <button @click="tm">ddddd</button>
</div>

JSコード

新しいVue({
  el:'#app',
 方法:{
   tm:関数(e){
    コンソールログ(e);
  }
 }
})

イベントオブジェクトとカスタムパラメータを同時に渡す

html

<div id="アプリ">
 <button @click="tm($event,123)">ddddd</button>
</div>

JSコード

新しいVue({
  el:'#app',
 方法:{
   tm:関数(e,値){
    コンソールログ(e);
    console.log(値);
  }
 }
})

補足: vue 共通イベント v-on:click とイベント オブジェクト、イベント バブリング、イベントのデフォルト動作

実は、v-on の後にはクリックイベントだけでなく他のイベントも続くことができ、使い方も同様です。たとえば、v-on:click/mouseout/mouseover/mousedown.......

次のクリックは例です

注: すべての v-on は @ と省略できます。たとえば、v-click は @click と省略できます。

1. イベントのリスニング

v-on ディレクティブを使用すると、DOM イベントをリッスンし、トリガーされたときに JavaScript コードを実行できます。一般的に言えば、DOMをリッスンして何らかの操作をトリガーすることです。これらの操作(クリックなど)がトリガーされた後に実行されるアクション(js)は、

v-on:click="item+=1"

例えば:

<テンプレート>
 <div> 要素
  <input type="button" value="clickme" v-on:click="item+=1"/>
  <div>{{アイテム}}</div>
 </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
 名前: 'HelloWorld',
 データ () {
  戻る {
  アイテム:1
  }
 }
}
</スクリプト>
 
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
 
</スタイル>

結果:

クリックするたびにバインド値が 1 ずつ増加していることがわかります。つまり、イベント トリガーの後に js 操作を配置できるということです。しかし、ロジックが複雑すぎると、書き込むことで混乱が生じ、ビューとロジックが混同されることがあります。したがって、クリックの後にメソッドを続けることができ、すべての処理ロジック メソッドを関数にカプセル化して、クリック時に呼び出すことができます。

2. イベント処理方法

v-on:click="挨拶"

例えば:

<テンプレート>
 <div> 要素
  <input type="button" value="clickme" v-on:click="greet"/>
  <div>{{res}}</div>
 </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
 名前: 'HelloWorld',
 データ () {
  戻る {
   名前 : 1,
   解像度:""
  }
 },
 方法:{
  挨拶: 関数 () {
   // メソッド内の `this` は現在の Vue インスタンスを参照します this.res = 'Hello ' + this.name + '!';
  }
 }
}
</スクリプト>
 
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
 
</スタイル>

効果:

クリックすると、greet メソッド内の js ロジックが実行されていることがわかります。

3. パラメータを使用した時間バインディング方式:

上記と同じですが、唯一の違いはパラメータを持っていることです

 v-on:click="greet(名前)"
<テンプレート>
 <div> 要素
  <input type="button" value="clickme" v-on:click="greet(name)"/>
  <div>{{res} </div>
 </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
 名前: 'HelloWorld',
 データ () {
  戻る {
   名前 : 1,
   解像度:""
  }
 },
 方法:{
  挨拶: 関数 (受け入れ) {
   // メソッド内の `this` は現在の Vue インスタンスを参照します this.res = 'Hello ' + reccept + 1 + '!';
  }
 }
}
</スクリプト>
 
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
 
</スタイル>

効果は一定です。メソッドは 1 つのメソッド内で複数回呼び出すこともできます。

4. インラインプロセッサのメソッド

つまり、メソッド内で他のメソッドを呼び出すということです。ここでの他のメソッドは、バブリング防止などのjsネイティブメソッドでも、カスタムメソッドでもかまいません。

v-on:click="greet(名前、$イベント)"

例えば:

<テンプレート>
 <div> 要素
  <input type="button" value="clickme" v-on:click="greet(name,$event)"/>
  <div>{{res} </div>
 </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
 名前: 'HelloWorld',
 データ () {
  戻る {
   名前 : 1,
   解像度:""
  }
 },
 方法:{
  挨拶: 関数 (reccept,event) {
   (reccept===1)の場合、this.say()
  },
  言う:関数() {
   this.res="電話しました"
  }
 }
}
</スクリプト>
 
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
 
</スタイル>

効果:

5. イベントオブジェクト

$eventは現在のクリックイベントのイベントオブジェクトを取得します。たとえば、clickは現在のクリックのDOMイベントオブジェクト情報を取得します。

v-on:click="($event) に挨拶する"

例えば:

<テンプレート>
 <div> 要素
  <input type="button" value="clickme" v-on:click="greet($event)"/>
 </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
 名前: 'HelloWorld',
 データ () {
  戻る {
   非表示: true
  }
 },
 方法:{
  挨拶: 関数 (ev) {
  アラート(ev.clientX)
  }
 }
}
</スクリプト>
 
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
 
</スタイル>

効果:

6. イベントバブリング

イベントのバブリングが阻止されない場合、イベントは2回バウンスします。

例えば

<テンプレート>
 <div> 要素
  <div @click="show1($event)">
   <div @click="show2($event)">クリックしてください</div>
  </div>
 </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
 名前: 'HelloWorld',
 データ () {
  戻る {
   非表示: true
  }
 },
 方法:{
  show1: 関数 (ev) {
   警告(1)
  },
  表示2: 関数 (ev1) {
   警告(2)
  }
 }
}
</スクリプト>
 
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
 
</スタイル>

しかし、泡立ちを止めれば、一度しか弾けません

例: ネイティブ js はバブリングを防止します

ev1.cancelBubble=true
<テンプレート>
 <div> 要素
  <div @click="show1($event)">
   <div @click="show2($event)">クリックしてください</div>
  </div>
 </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
 名前: 'HelloWorld',
 データ () {
  戻る {
   非表示: true
  }
 },
 方法:{
  show1: 関数 (ev) {
   警告(1)
  },
  表示2: 関数 (ev1) {
    ev1.cancelBubble=true
   警告(2)
 
  }
 }
}
</スクリプト>
 
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
 
</スタイル>

では、Vue 自体にカプセル化されたバブリング防止メソッドはどうでしょうか?

@click.stop="show2()"

例えば:

<テンプレート>
 <div> 要素
  <div @click="show1()">
   <div @click.stop="show2()">クリックしてください</div>
  </div>
 </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
 名前: 'HelloWorld',
 データ () {
  戻る {
   非表示: true
  }
 },
 方法:{
  表示1: 関数() {
   警告(1)
  },
  表示2: 関数 (ev1) {
   警告(2)
  }
 }
}
</スクリプト>
 
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
 
</スタイル>

7. デフォルトの動作を防止する:

たとえば、右クリックすると、次のようなデフォルトメニューが表示されます。

<テンプレート>
 <div> 要素
  <div>
   <div @contextmenu="show2()">右クリックしてください</div>
  </div>
 </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
 名前: 'HelloWorld',
 データ () {
  戻る {
   非表示: true
  }
 },
 方法:{
  表示2: 関数 (ev1) {
   警告(2)
 
  }
 }
}
</スクリプト>
 
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
 
</スタイル>

効果:

デフォルトの動作を防ぐ方法があります

ev1.preventDefault();

例えば:

<テンプレート>
 <div> 要素
  <div>
   <div @contextmenu="show2($event)">右クリックしてください</div>
  </div>
 </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
 名前: 'HelloWorld',
 データ () {
  戻る {
   非表示: true
  }
 },
 方法:{
  表示2: 関数 (ev1) {
   警告(2);
   ev1.preventDefault();
  }
 }
}
</スクリプト>
 
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
 
</スタイル>

クリックしてもデフォルトのメニューは表示されません(PS 360 ブラウザの右クリックは無効です)

デフォルトの動作を防ぐために vue でカプセル化されたメソッド:

@contextmenu.prevent="show2()"

例えば:

<テンプレート>
 <div> 要素
  <div>
   <div @contextmenu.prevent="show2()">右クリックしてください</div>
  </div>
 </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
 名前: 'HelloWorld',
 データ () {
  戻る {
   非表示: true
  }
 },
 方法:{
  表示2: 関数 (ev1) {
   警告(2);
  }
 }
}
</スクリプト>
 
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
 
</スタイル>

8. その他のイベント修飾子

使い方は同じなので繰り返しません。

。捕獲

。自己

。一度

<!-- クリック イベントがそれ以上伝播しないようにする -->
<a v-on:click.stop="doThis"></a>
<!-- 送信イベントでページがリロードされなくなりました -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修飾子は連鎖できます -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 修飾子のみ -->
<フォーム v-on:submit.prevent></フォーム>
<!-- イベント リスナーを追加するときにイベント キャプチャ モードを使用する -->
<!-- つまり、要素自体によってトリガーされたイベントはここで最初に処理され、その後、内部要素に渡されて処理されます-->
<div v-on:click.capture="doThis">...</div>
<!-- event.target が現在の要素自体である場合にのみハンドラーをトリガーします -->
<!-- つまり、イベントは内部要素からトリガーされません-->
<div v-on:click.self="doThat">...</div>

修飾子を使用する場合、順序が重要であり、対応するコードは同じ順序で生成されます。したがって、@click.prevent.self を使用するとすべてのクリックが防止されますが、@click.self.prevent を使用すると要素自体のクリックのみが防止されます。

2.1.4 追加

<!-- クリック イベントは 1 回だけ発生します -->
<a v-on:click.once="doThis"></a>

ネイティブ DOM イベントでのみ機能する他の修飾子とは異なり、.once 修飾子はカスタム コンポーネント イベントでも使用できます。コンポーネントに関するドキュメントをまだ読んでいない場合は、今は心配する必要はありません。

<!-- スクロール イベントはデフォルトのスクロール動作をキャンセルしません -->
<div v-on:scroll.passive="onScroll">...</div>

Vue は、モバイル パフォーマンスを向上させるために、これらの修飾子に対して追加の .passive 修飾子を提供します。

たとえば、スクロールする場合、ブラウザは処理関数でイベントが event.preventDefault() と呼ばれたかどうかを認識しないため、イベント全体が処理された後にスクロールをトリガーします。 .passive 修飾子は、このイベントのデフォルトの動作がキャンセルされないことをブラウザにさらに伝えるために使用されます。

.passive と .prevent を一緒に使用しないでください。パッシブ ハンドラーは、デフォルトのイベント動作を防ぐことはできません。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • Vue 選択変更イベントでカスタムパラメータを渡す方法
  • vue-custom コンポーネント値転送例の説明
  • Vueでイベントパラメータをカスタマイズする方法

<<:  MySQL 5.7 以降のバージョンのダウンロードとインストールのグラフィック チュートリアル

>>:  Nginx で WordPress を設定する方法

推薦する

MySQL 5.x 以降を使用している場合のエラー #1929 列 ''createtime'' の日付時刻値が正しくありません: '''' の簡単な解決方法

MySQL をインストールした後、テーブル データを保存および削除しようとすると、常にエラー メッセ...

Linux MySQL ルートパスワードを忘れた場合の解決方法

MySQL データベースを使用する際、何らかの理由で長期間 MySQL にログインしていない場合、ま...

CSS で写真のスタッキング効果を実装するサンプルコード

成果を達成するステップ1. 初期index.html最初の写真、一番上の写真を作成します。写真の i...

CSSアニメーション効果アニメーションの一般的なスタイル

アニメーションアニメーションを定義します。 /*アニメーションの各ステップで実行されるアクションを定...

JavaScriptのプリコンパイルを見てみましょう(概要)

JSランニング三部作js実行コードは3つのステップに分かれています構文解析プリコンパイル解釈Jav...

Ubuntu20のtzselect設定時間失敗問題、Raspberry Piサーバ(推奨)

2 日前、Raspberry Pi サーバーを Ubuntu 20 にアップグレードしました。今日...

Nginx メモリプールのソースコード分析

目次メモリプールの概要1. nginxデータ構造2. nginxはOSからスペースngx_creat...

Nginx フォワード プロキシとリバース プロキシ、および負荷分散機能の構成コード例

この記事は主に、Nginx のフォワード プロキシとリバース プロキシ、および負荷分散機能の設定コー...

Unicode 署名 BOM の詳細な説明

Unicode 署名 BOM - BOM とは何ですか? BOM は Byte Order Mark...

CSSは、マウスを線の上に置くと線全体の色を変える効果を実現します。

まとめ:以下のように、CSS で指定した行にマウスを置いたときに行全体の色を変更する方法を示します。...

IE8対応のボーダー半径処理方法

canisue (http://caniuse.com/#search=border-radius)...

MySQL 接続失敗の一般的な障害と原因

==================================================...

共有サイドバーを実装するためのネイティブJS

この記事では、ネイティブ JS で実装された共有サイドバーを紹介します。効果は次のとおりです。 以下...

スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作

Dockerfileの作成yumソースを設定する cd /tmp/docker vim Docker...

2列のデータをSQLの新しい列として操作する

以下のように表示されます。 bb_sbからa1、a2、a1+a2 a、a1*a2 b、a1*1.0/...