ホームページ > ウェブフロントエンド > Vue.js > Vue コマンドの修飾子、一般的なイベント修飾子の概要について説明します。

Vue コマンドの修飾子、一般的なイベント修飾子の概要について説明します。

青灯夜游
リリース: 2022-08-10 15:58:10
転載
3152 人が閲覧しました

この記事では、vue 命令の修飾子について説明し、vue の命令修飾子と dom イベントのイベント オブジェクトを比較し、一般的に使用されるイベント修飾子を紹介します。 . 役に立ちます!

Vue コマンドの修飾子、一般的なイベント修飾子の概要について説明します。

vue の命令修飾子と dom イベントのイベント オブジェクトを比較します

vue の修飾子について説明する前に、 DOM 操作で使用されるイベント オブジェクトの共通のメソッド/属性を使用します。イベントの属性とは何ですか? 私が使用したイベントの属性は次のとおりです:

1. デフォルトのイベントジャンプ (a タグの href のジャンプやフォームの送信など) を防止します (学習ビデオ共有: vue ビデオ チュートリアル )

event.preventDefault()
ログイン後にコピー

2. バブリング イベントを防止します (たとえば、親要素がイベントをバインドし、子要素もイベントをバインドします。バブリングがキャンセルされない場合は、子要素をクリックすると、
要素は、親要素のイベント

event.stopPropagation()
ログイン後にコピー

3 もトリガーします。後続のイベントがトリガーされないようにします。A に記述すると、その後に登録されたイベント B はトリガーされません (たとえば、ボタン) 2 つのイベントをバインドします、
パス [優先度] に登録された A と B、A の実行時には B は実行されません)

event.stopImmediatePropagation()
ログイン後にコピー

4. イベントをバインドする要素 (ul バインディング イベントなど)そして li をクリックしてから currentTarget が返されます。戻り値は ul

event.currentTarget
ログイン後にコピー

5 です。ul バインディング イベントなどのイベントが発生した要素で、その後 li をクリックすると、ターゲットの戻り値はクリックされた li になります。

event.target
ログイン後にコピー

上記は DOM ツリーで動作するいくつかの属性/メソッドですが、Vue フレームワークを使用する場合、これらの DOM 操作は必要ありません。Vue のメソッドには、さまざまな機能を実装するためのより優れた、より簡潔な構文修飾子があります。 .

イベント修飾子

イベント ハンドラーには、特定のデフォルト イベント ジャンプの防止や、イベントをリロードせずにイベントを送信するなど、変更が必要な関数が常にあります。この問題を解決するために、vuejs は v-on 用のイベント修飾子をいくつか提供しています。修飾子はドットで始まる命令サフィックス名で表されます。イベント修飾子を使用しましたか? ?

.stop

  • .prevent
  • .capture
  • .once
  • #.stop

# #.stop を追加しない場合の印刷結果

<span style="font-size: 16px;"></span>.stop

## を追加した場合の印刷結果

Vue コマンドの修飾子、一般的なイベント修飾子の概要について説明します。

#ソースコード:

  <template >
  <div @click="fnFather">
    <!-- 阻止事件冒泡 -->
    <button @click.stop="fn">阻止事件冒泡</button>
  </div>
</template>
<script>
export default {
  methods: {
    fn() {
      console.log("按钮点击了");
    },
    fnFather() {
      console.log("父元素 点击了");
    },
  },
};
</script>
<style>
</style>
ログイン後にコピー
Vue コマンドの修飾子、一般的なイベント修飾子の概要について説明します。

結論

子要素をクリックすると、親要素もトリガーされ、これがイベント バブリングです。イベント バブリングを防ぐには .stop を使用します。これは、子要素のイベントが親に伝播するのを防ぐことを意味します。

.prevent


追加されません .prevent

属性の効果<span style="font-size: 16px;"></span><span style="font-size: 16px;"></span>##追加

.prevent

Vue コマンドの修飾子、一般的なイベント修飾子の概要について説明します。

属性の効果

<span style="font-size: 16px;"></span>ソースコード

<template >
  <div>
    <!-- .prevent 阻止默认事件跳转 -->
    <a href="http://taobao.com" @click.prevent="eve">阻止跳转到淘宝</a>
  </div>
</template>
<script>
export default {
  methods: {
    eve() {
      console.log("按钮点击了");
    },
  },
};
</script>
ログイン後にコピー
結論

Vue コマンドの修飾子、一般的なイベント修飾子の概要について説明します。a タグの href 属性は、ページにジャンプします。a タグを使用して一部の機能を実行し、デフォルトのジャンプが必要ない場合は、.prevent を使用してデフォルトのイベント ジャンプを防ぐことができます。 。実際、デフォルト イベントのジャンプを防ぐために .prevent を使用するフォーム送信イベントもあります。

.capture

.capture

その意味は、イベント キャプチャは一般的には使用されませんが、理解することは依然として重要であるということです =

次は 4 つの div の構造を持つボックスです
<template >
  <div @click="hand(&#39;最外层&#39;)">
    <div class="grandfather" @click="hand(&#39;抓到爷爷了&#39;)">
      <div class="father" @click="hand(&#39;抓到爸爸了&#39;)">
        <div class="son" @click="hand(&#39;抓到儿子了&#39;)"></div>
      </div>
    </div>
  </div>
</template>
ログイン後にコピー
設定なし.capture
It 順番はイベントを内側から外側へ実行するバブリングイベントです。

ソースコード

<template >
  <div @click="hand(&#39;最外层&#39;)">
    <div class="grandfather" @click="hand(&#39;抓到爷爷了&#39;)">
      <div class="father" @click="hand(&#39;抓到爸爸了&#39;)">
        <div class="son" @click="hand(&#39;抓到儿子了&#39;)"></div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  methods: {
    hand(val) {
      console.log(val);
    },
  },
};
</script>
ログイン後にコピー

図のように

<span style="font-size: 16px;"></span>.capture

を設定後、外部から実行されます。単一の設定または複数の設定を指定できます。

ソース コード

Vue コマンドの修飾子、一般的なイベント修飾子の概要について説明します。

<template >
  <div @click.capture="hand(&#39;最外层&#39;)">
    <div class="grandfather" @click.capture="hand(&#39;抓到爷爷了&#39;)">
      <div class="father" @click.capture="hand(&#39;抓到爸爸了&#39;)">
        <div class="son" @click.capture="hand(&#39;抓到儿子了&#39;)"></div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  methods: {
    hand(val) {
      console.log(val);
    },
  },
};
</script>
<style>
div {
  margin: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 800px;
  height: 800px;
  background-color: green;
}
.grandfather {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 500px;
  height: 500px;
  background-color: #ccc;
}
.father {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 300px;
  height: 300px;
  background-color: red;
}
.son {
  width: 100px;
  height: 100px;

  background-color: skyblue;
}
</style>
ログイン後にコピー

図に示すように:# ##################################

得出结论

冒泡是从里往外冒,捕获是从外往里捕.capture 它是事件捕获 当它存在时,会先从外到里的捕获,剩下的从里到外的冒泡。

.once

.once 含义是点击事件将只会触发一次 没有设置 .once 就是普通的函数正常执行

<template >
  <button @click="hand">函数只会执行一次</button>
</template>
<script>
export default {
  methods: {
    hand() {
      console.log("函数只会执行一次,再次点击不会执行");
    },
  },
};
</script>
ログイン後にコピー

Vue コマンドの修飾子、一般的なイベント修飾子の概要について説明します。

设置了 .once 就只能执行一次

<template >
  <button @click.once="hand">函数只会执行一次</button>
</template>
<script>
export default {
  methods: {
    hand() {
      console.log("函数只会执行一次,再次点击不会执行");
    },
  },
};
</script>
ログイン後にコピー

Vue コマンドの修飾子、一般的なイベント修飾子の概要について説明します。

得出结论

.once  就只能执行一次,再次点击就不会执行了

(学习视频分享:web前端开发编程基础视频

以上がVue コマンドの修飾子、一般的なイベント修飾子の概要について説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート