Vue.js ディレクティブのカスタム命令の詳細な説明

Vue.js ディレクティブのカスタム命令の詳細な説明

デモコマンドをカスタマイズする

Vue カスタム ディレクティブの構文は次のとおりです。

Vue.directive(id, 定義)

渡される 2 つのパラメータ、id は命令 ID を参照し、definition は定義オブジェクトを参照します。その中で、定義オブジェクトはいくつかのフック関数を提供できます。

<div id="アプリ">
	<!-- 入力ボックスにフォーカスが当たります-->
	<input type="text" v-focus/>
</div>

<スクリプト>
	// グローバルカスタムディレクティブ v-focus を登録する
	Vue.directive("フォーカス", {
		// バインドされた要素が DOM に挿入されるとき。
		挿入(el, バインディング) {
			// 要素にフォーカス el.focus();
		}
	})
</スクリプト>
<div id="アプリ">
    <p v-demo:red="msg">{{msg}}</p>
</div>

<スクリプト>
	// グローバルディレクティブ Vue.directive('demo', function (el, binding) {
        console.log(el) //p タグ console.log(binding) //出力はオブジェクト obj です
        console.log('コマンド名:'+binding.name) //コマンド名console.log('コマンドバインディング値:'+binding.value) //コマンドバインディング値console.log('バインディング値の文字列形式:'+binding.expression) //バインディング値の文字列形式console.log('コマンドに渡されたパラメーター:'+binding.arg) //コマンドに渡されたパラメーター})
    var vm = 新しい Vue({
        el: "#app",
        データ: {
            メッセージ: 'こんにちは!'
        },
        // ローカルディレクティブ:{
			デモ:{
				挿入: 関数 (el) {
					コンソール.log(el)
				}      
			}
		}
    })
</スクリプト>

ここに写真の説明を記入してください

オブジェクトリテラル

<div id="アプリ">
    <p v-demo="colours">{{colours.text}}</p>
</div>

<スクリプト>
    Vue.directive('demo', 関数(el, バインディング) {
        console.log(el) // pタグ console.log(binding) // 出力はオブジェクトobjです
        console.log(binding.value) // {color: 'blue',text: 'hello!'}
        console.log(binding.value.color) // '青'
        console.log(binding.value.text) // 'hello!'
        el.style = 'color:' + binding.value.color  
    })
    var vm = 新しい Vue({
        el: "#app",
        データ: {
            色:
                色: '青'、
                テキスト: 'こんにちは!'
            }
        }
    })
</スクリプト>

ライフサイクルフック

ディレクティブ定義関数は、いくつかのフック関数を提供します (オプション)。

  1. bind : ディレクティブが最初に要素にバインドされるときに 1 回だけ呼び出されます。このフック関数は、バインド中に 1 回実行される初期化アクションを定義するために使用できます。
  2. inserted : バインドされた要素が親ノード ( div#app ) に挿入されたときに呼び出されます (親ノードが存在する場合に呼び出すことができますが、必ずしもドキュメント内にあるとは限りません)。
  3. update : 命令にバインドされた要素 (VNode 仮想ノード) の状態が変更されたときにトリガーされます (スタイル、コンテンツ、Vue データなどを含む)
  4. componentUpdated : 命令が配置されているコンポーネントの VNode とその子 VNode がすべて更新された後に呼び出されます。
  5. unbind : ディレクティブが要素からアンバインドされたとき (要素が DOM から削除されたとき) に 1 回だけ呼び出されます。
<div id="アプリ">
    <p v-demo="color">{{num}}</p>
    <button @click="add">追加</button>
    <button onclick='unbind()'>バインド解除</button>
</div>

<スクリプト>
    関数アンバインド() {
        vm.$destroy(); //バインドを解除する別のメソッドを開始します}
    Vue.directive('demo', { // ディレクティブを登録するための 5 つのフック関数 bind: function () { //1. バインドする // バインドの準備をします。たとえば、イベント リスナーや、一度だけ実行する必要があるその他の複雑な操作を追加します console.log('1 - bind');
        },
        挿入: function () { //2. ノードにバインド console.log('2 - 挿入');
        },
        update: function () { //3. コンポーネントの更新 // 取得した新しい値に基づいて対応する更新を実行します。初期値の場合、console.log('3 - update'); も 1 回呼び出されます。
        },
        componentUpdated: function () { //4. コンポーネントの更新が完了しました console.log('4 - componentUpdated');
        },
        unbind: function () { //5. Unbind//クリーンアップ操作を実行します。たとえば、bind によってバインドされたイベント リスナーを削除する場合は、console.log('5 - bind');
        }
    })
    var vm = 新しい Vue({
        el: "#app",
        データ: {
            番号: 10,
            色: 「赤」
        },
        メソッド: {
            追加: 関数 () {
                this.num++;
            }
        }
    })
</スクリプト>

トリガー メソッド 1 と 2 を初期化し、[追加] ボタンをクリックしてメソッド 3 と 4 をトリガーし、[バインド解除] ボタンをクリックしてメソッド 5 をトリガーします (以下を参照)。

ここに写真の説明を記入してください

Vue.js ディレクティブのカスタム命令の詳細な説明に関するこの記事はこれで終わりです。より関連性の高い Vue.js ディレクティブのカスタム命令については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue.js ソースコード解析のカスタム手順の詳細な説明
  • Vue.jsカスタム手順の学習と使用の詳細な説明
  • Vue.js でカスタム ドロップダウン メニューの指示を実装する方法について簡単に説明します。
  • Vue.js コンポーネントの再利用性ミックスインメソッドとカスタムディレクティブの詳細な説明
  • vue.js 内部カスタム命令とグローバルカスタム命令の詳細な実装 (using ディレクティブ)
  • Vue.jsカスタム命令の基本的な使用方法の詳細

<<:  Dockerがプライベート倉庫Harborを構築する手順

>>:  mysql MDLメタデータロックの詳細な分析

推薦する

JavaScript 配列の詳細な概要

目次1. 配列誘導1. 文字列を配列に分割する2. コレクションとマップを新しい配列に変換する3. ...

Vueルーティングはページステータスを復元する操作メソッドを返します

ルートパラメータ、ルートナビゲーションガード: ページが戻ったときに検索結果を保持する需要シナリオ:...

MySQL統計テーブルのサイズを説明する例

各データベース内の各テーブルのサイズをカウントすることは、データ ガバナンスの最も単純な要件の 1 ...

HTML に埋め込まれた Flash HTML ウェブページ コードに Flash ファイルを埋め込むソリューション (パート 2)

上の記事で、SWFObject V1.5 の使い方の紹介は一旦終了です。これから、SWFObject...

Layuiはログインインターフェース検証コードを実装します

この記事の例では、ログインインターフェース検証コードを実装するためのlayuiの具体的なコードを参考...

HTML で margin:0 auto を使用するとページ全体が中央に配置されない問題の解決方法

今日、jsp ページを書きました。<div style="margin:0 auto...

Dockerは複数のポートマッピングコマンドを有効にします

次のように: docker run -d -p 5000:23 -p 5001:22 --name ...

MySQL DDL による同期遅延を解決する方法

目次序文解決ツールの紹介仕組み使用制限使用上の注意使用例いくつかのパラメータの説明出力例Tencen...

フレックスレイアウトとposition:absolute/fixedの競合の詳細な説明

以前、プロジェクトを開発しているときに、flex レイアウトと position:absolute/...

div要素に丸い境界線を追加する方法

以下のように表示されます。 CSSコードコンテンツをクリップボードにコピー分割{境界線: 2px 固...

MySQL スロークエリログの役割と公開

序文MySQL スロー クエリ ログは、MySQL が提供するログ レコードの一種です。これは、応答...

Vue は携帯電話の認証コードによるログインを実装します

この記事では、携帯電話認証コードログインを実装するためのVueの具体的なコードを参考までに共有します...

Vue で lodop 印刷コントロールを使用してブラウザ互換の印刷を実現する方法

序文このコントロールを直接印刷すると下部に透かしが入りますが、公式 Web サイトから購入することで...

インターネットウェブデザインにおけるバイオニックデザインの簡単な紹介

バイオニックデザインといえば、飛行機の発明、ドバイのブルジュ・アル・アラブ、平泳ぎなどを思い浮かべる...

MySQL の従来のソート、カスタム ソート、中国語のピンイン文字によるソート

MySQL の通常のソート、カスタム ソート、中国語のピンイン文字によるソート。実際の SQL を記...