目次
メソッドとイベント ハンドラー
メソッド ハンドラー
内联语句处理器
事件修饰符
按键修饰符
为什么在 HTML 中监听事件?
ホームページ ウェブフロントエンド jsチュートリアル Vue のメソッドとイベント処理に関する問題

Vue のメソッドとイベント処理に関する問題

Oct 24, 2017 am 10:54 AM
イベント 対処する 質問

メソッドとイベント ハンドラー

メソッド ハンドラー

v-on ディレクティブを使用して DOM イベントをリッスンできます: v-on 指令监听 DOM 事件:

<p id="example">
  <button v-on:click="greet">Greet</button>
</p>
ログイン後にコピー

我们绑定了一个单击事件处理器到一个方法 greet。下面在 Vue 实例中定义这个方法:

var vm = new Vue({
  el: &#39;#example&#39;,
  data: {
    name: &#39;Vue.js&#39;
  },
  // 在 `methods` 对象中定义方法
  methods: {
    greet: function (event) {
      // 方法内 `this` 指向 vm
      alert(&#39;Hello &#39; + this.name + &#39;!&#39;)
      // `event` 是原生 DOM 事件
      alert(event.target.tagName)
    }
  }
})

// 也可以在 JavaScript 代码中调用方法
vm.greet() // -> &#39;Hello Vue.js!&#39;
ログイン後にコピー

内联语句处理器

除了直接绑定到一个方法,也可以用内联 JavaScript 语句:

<p id="example-2">
  <button v-on:click="say(&#39;hi&#39;)">Say Hi</button>
  <button v-on:click="say(&#39;what&#39;)">Say What</button>
</p>

new Vue({
  el: &#39;#example-2&#39;,
  methods: {
    say: function (msg) {
      alert(msg)
    }
  }
}
ログイン後にコピー

类似于内联表达式,事件处理器限制为一个语句。

有时也需要在内联语句处理器中访问原生 DOM 事件。可以用特殊变量 $event 把它传入方法:

<button v-on:click="say(&#39;hello!&#39;, $event)">Submit</button>
ログイン後にコピー
// ...
methods: {
  say: function (msg, event) {
    // 现在我们可以访问原生事件对象
    event.preventDefault()
  }
}
ログイン後にコピー

事件修饰符

在事件处理器中经常需要调用 event.preventDefault()event.stopPropagation()。尽管我们在方法内可以轻松做到,不过让方法是纯粹的数据逻辑而不处理 DOM 事件细节会更好。

为了解决这个问题,Vue.js 为 v-on 提供两个 事件修饰符:.prevent.stop。你是否还记得修饰符是点号打头的指令后缀?

<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>

<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat">

<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
ログイン後にコピー

1.0.16 添加了两个额外的修饰符:

<!-- 添加事件侦听器时使用 capture 模式 -->
<p v-on:click.capture="doThis">...</p>

<!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
<p v-on:click.self="doThat">...</p>
ログイン後にコピー

按键修饰符

在监听键盘事件时,我们经常需要检测 keyCode。Vue.js 允许为 v-on 添加按键修饰符:

<!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
<input v-on:keyup.13="submit">
ログイン後にコピー

记住所有的 keyCode 比较困难,Vue.js 为最常用的按键提供别名:

<!-- 同上 -->
<input v-on:keyup.enter="submit">

<!-- 缩写语法 -->
<input @keyup.enter="submit">
ログイン後にコピー

全部的按键别名:

enter
tab
delete
esc
space
up
down
left
right
ログイン後にコピー

1.0.8+: 支持单字母按键别名。

1.0.17+: 可以自定义按键别名:

// 可以使用 @keyup.f1
Vue.directive(&#39;on&#39;).keyCodes.f1 = 112
ログイン後にコピー

为什么在 HTML 中监听事件?

你可能注意到这种事件监听的方式违背了传统理念 “separation of concern”。不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑定在当前视图的 ViewModel 上,它不会导致任何维护困难。实际上,使用 v-onrrreee

クリック イベント ハンドラーをメソッド greet にバインドします。コード>。以下の Vue インスタンスでこのメソッドを定義します: <ol class=" list-paddingleft-2">rrreee<li>インライン ステートメント プロセッサ<p></p> メソッドに直接バインドすることに加えて、インライン JavaScript ステートメントを使用することもできます: </li>rrreee<li> インライン式と同様に、イベント ハンドラーはステートメントに限定されます。 <p></p>インライン ステートメント ハンドラーでネイティブ DOM イベントにアクセスする必要がある場合もあります。特別な変数 <code>$event を使用して、それをメソッドに渡すことができます: rrreeerrreee
  • イベント修飾子

    イベント ハンドラーでは、多くの場合、event.preventDefault() を呼び出す必要があります。またはevent.stopPropagation()。これはメソッド内で簡単に実行できますが、DOM イベントの詳細を処理せずにメソッドを純粋なデータ ロジックにする方が良いでしょう。
  • この問題を解決するために、Vue.js は v-on.prevent.stop という 2 つのイベント修飾子を提供します。修飾子はピリオドで始まるコマンド接尾辞であることをまだ覚えていますか? 🎜rrreee🎜1.0.16 では、2 つの追加の修飾子が追加されています: 🎜rrreee🎜キー修飾子🎜🎜 キーボード イベントをリッスンするとき、多くの場合、keyCode を検出する必要があります。 Vue.js では、v-on にキー修飾子を追加できます: 🎜rrreee🎜keyCode をすべて覚えるのは困難ですが、Vue.js は最もよく使用されるキーのエイリアスを提供します: 🎜rrreee

    すべてのボタン エイリアス: 🎜rrreee🎜1.0.8+: 1 文字のボタン エイリアスをサポートします。 🎜🎜1.0.17+: キーのエイリアスをカスタマイズできます: 🎜rrreee🎜なぜ HTML でイベントをリッスンするのですか?🎜🎜 このイベント監視の方法が、「関心の分離」という従来の概念に反していることに気づくかもしれません。心配しないでください。すべての Vue.js イベント ハンドラーと式は現在のビューの ViewModel に厳密にバインドされているため、メンテナンスが困難になることはありません。実際、v-on の使用にはいくつかの利点があります: 🎜🎜🎜🎜HTML テンプレートをスキャンすることで、JavaScript コード内の対応するメソッドを簡単に見つけることができます。 🎜🎜🎜🎜JavaScript でイベントを手動でバインドする必要がないため、ViewModel コードは非常に純粋なロジックとなり、DOM から完全に切り離され、テストが容易になります。 🎜🎜🎜🎜 ViewModel が破棄されると、すべてのイベント ハンドラーが自動的に削除されます。自分で掃除することを心配する必要はありません。 🎜🎜🎜

    以上がVue のメソッドとイベント処理に関する問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    WIN10サービスホストの動作プロセスがCPUを過剰に占有している WIN10サービスホストの動作プロセスがCPUを過剰に占有している Mar 27, 2024 pm 02:41 PM

    1. まず、タスクバーの空白スペースを右クリックして[タスクマネージャー]オプションを選択するか、スタートロゴを右クリックして[タスクマネージャー]オプションを選択します。 2. 開いたタスク マネージャー インターフェイスで、右端の [サービス] タブをクリックします。 3. 開いた[サービス]タブで、下の[サービスを開く]オプションをクリックします。 4. 表示される[サービス]ウィンドウで、[InternetConnectionSharing(ICS)]サービスを右クリックし、[プロパティ]オプションを選択します。 5. 表示されたプロパティ画面で[プログラムから開く]を[無効]に変更し、[適用]をクリックして[OK]をクリックします。 6. スタートロゴをクリックし、シャットダウンボタンをクリックして[再起動]を選択し、コンピュータの再起動を完了します。

    PHP で特殊文字を処理し、一重引用符を変換する方法を学習します。 PHP で特殊文字を処理し、一重引用符を変換する方法を学習します。 Mar 27, 2024 pm 12:39 PM

    PHP 開発のプロセスでは、特殊文字の処理が一般的な問題になります。特に文字列処理では、特殊文字がエスケープされることがよくあります。その中でも、特殊文字を一重引用符に変換することは比較的一般的な要件です。これは、PHP では一重引用符が文字列をラップする一般的な方法であるためです。この記事では、PHP での特殊文字変換シングルクォーテーションの扱い方と具体的なコード例を説明します。 PHP では、特殊文字には一重引用符 (')、二重引用符 (")、バックスラッシュ () などが含まれますが、これらに限定されません。

    jQueryがform要素の値を取得できない問題の解決方法 jQueryがform要素の値を取得できない問題の解決方法 Feb 19, 2024 pm 02:01 PM

    jQuery.val() が使用できない問題を解決するには、具体的なコード例が必要です フロントエンド開発者にとって、jQuery の使用は一般的な操作の 1 つです。その中でも、.val() メソッドを使用してフォーム要素の値を取得または設定する操作は、非常に一般的な操作です。ただし、特定のケースでは、.val() メソッドを使用できないという問題が発生する可能性があります。この記事では、いくつかの一般的な状況と解決策を紹介し、具体的なコード例を示します。問題の説明 jQuery を使用してフロントエンド ページを開発する場合、時々次のような問題が発生します。

    jQueryで選択要素の変更イベントバインディングを実装する方法 jQueryで選択要素の変更イベントバインディングを実装する方法 Feb 23, 2024 pm 01:12 PM

    jQuery は、DOM 操作、イベント処理、アニメーション効果などを簡素化するために使用できる人気のある JavaScript ライブラリです。 Web 開発では、選択した要素のイベント バインディングを変更する必要がある状況によく遭遇します。この記事では、jQuery を使用して選択要素変更イベントをバインドする方法を紹介し、具体的なコード例を示します。まず、ラベルを使用してオプションを含むドロップダウン メニューを作成する必要があります。

    Rulong 8 ワインマスター試験の問題は何ですか? Rulong 8 ワインマスター試験の問題は何ですか? Feb 02, 2024 am 10:18 AM

    Yulong 8 ワインマスター試験にはどのような問題がありますか?対応する答えは何でしょうか?試験に早く合格するにはどうすればよいですか?マスター オブ ワイン試験の活動では、回答しなければならない質問がたくさんあり、その回答を参照して解決することができます。これらの質問にはすべてワインの知識が含まれます。参考が必要な場合は、龍が如く 8 ワインマスター試験問題の解答の詳細な分析を見てみましょう。 Rulong 8 ワインマスター試験の問題の答えを詳しく解説 1.「ワイン」に関する質問。ハワイで大量に栽培されているサトウキビの糖分を原料に醸造され、王室御用達の蒸留所で造られる蒸留酒です。このワインの名前は何ですか? 答え: ラム酒 2.「ワイン」についての質問です。写真は乾燥高麗人参と乾燥ベルモットをブレンドしたドリンクです。オリーブが入っているのが特徴で「コックニー」と呼ばれています。

    PHP 文字列処理: 右側の最初の文字を削除するには? PHP 文字列処理: 右側の最初の文字を削除するには? Mar 01, 2024 pm 12:51 PM

    PHP での文字列の処理は非常に一般的な操作であり、右側の最初の文字を削除することも一般的なニーズです。この記事では、PHP コードを使用して右側の最初の文字を削除する方法を説明します。まず、右側の最初の文字を削除する方法を示す文字列処理関数の簡単な例を見てみましょう。

    PHP を使用してイベントベースのアプリケーションを構築する方法 PHP を使用してイベントベースのアプリケーションを構築する方法 May 04, 2024 pm 02:24 PM

    PHP でイベントベースのアプリケーションを構築する方法には、EventSourceAPI を使用してイベント ソースを作成する方法と、EventSource オブジェクトを使用してクライアント側でイベントをリッスンする方法が含まれます。 Server Sent Events (SSE) を使用してイベントを送信し、XMLHttpRequest オブジェクトを使用してクライアント側でイベントをリッスンします。実際の例は、EventSource を使用して、電子商取引 Web サイトの在庫数をリアルタイムで更新することです。これは、サーバー側で在庫をランダムに変更して更新を送信することで実現され、クライアントは EventSource を通じて在庫の更新をリッスンし、それらを表示します。リアルタイム。

    PHP プログラミングのヒント: 最後のセミコロンの状況に対処する方法 PHP プログラミングのヒント: 最後のセミコロンの状況に対処する方法 Mar 26, 2024 pm 12:45 PM

    PHP プログラミングのヒント: 最後のセミコロンを処理する方法 PHP プログラミングでは、最後のセミコロンを処理する必要がある状況によく遭遇します。特にループや条件文では、セミコロンを 1 つ減らしたり増やしたりすることで、プログラム エラーが発生しやすくなります。この状況を回避するために、最後のセミコロンの状況を処理するいくつかのプログラミング手法を採用できます。以下に、最後のセミコロンを処理するための一般的な手法とコード例をいくつか示します。 1. if ステートメントを使用して最後のセミコロンを判断します。

    See all articles