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メタデータロックの詳細な分析

推薦する

CSS を使用して半透明の背景と不透明なテキストを実現する例

この記事では、CSS を使用して半透明の背景と不透明なテキストの効果を実現する方法の例を紹介します。...

シンプルなドラッグ効果を実現するJavaScript

この記事では、簡単なドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

MySQLのバックアップとリカバリの詳細な説明

序文:前回の記事では、さまざまな MySQL ステートメント構文の使用法とユーザー権限に関する知識を...

Linux環境変数の設定戦略の詳細な説明

ソフトウェアのインストールをカスタマイズする場合、多くの場合、環境変数を設定する必要があります。以下...

MySQLコンテナ間のレプリケーション構成例の詳細な説明

背景先週、会社で MySQL レプリケーションのトレーニングを受けたので、今週末は学んだことを実践す...

MySQL 5.7 でルートパスワードを変更する方法に関するチュートリアル

バージョンアップデートにより、元のユーザーのパスワードフィールドがauthentication_st...

Linux で MySQL パスワードを忘れた場合の解決策

問題は次のとおりです。mysql -uroot -p コマンドを入力しましたが、パスワードを忘れてし...

MySQLのストレージエンジンについてお話しましょう

基礎リレーショナル データベースでは、各データ テーブルはファイルに相当し、異なるストレージ エンジ...

RGBAアルファ透明度変換計算表

IEでのRGBAとフィルター値の変換RGBA 透明度値IE フィルター値0.1 19 0.2 33 ...

Vue で HTML 5 ドラッグ アンド ドロップ API を使用する方法

ドラッグ アンド ドロップ API は、ドラッグ可能な要素を HTML に追加し、ドラッグ可能な豊富...

CSSを使用して円形の波効果を実現する

モバイル デバイスでは、金額を表示するために円形の波グラフィックがよく使用されます。最初は、この効果...

divは、自動入力スタイルをブロックする入力ボックスとして入力を使用せずにコンテンツを入力できます。

今日、私は公開用の動的なウィンドウ スタイルを設計しましたが、マウスで入力をクリックしたときにブラウ...

Linux でのスケジュールされたタスクと遅延タスクの詳細な説明

で+ 時間 17:23に at> touch /mnt/file{1..9} ##アクションを...

InnoDB の主な機能 - 挿入キャッシュ、2 度書き込み、適応ハッシュ インデックスの詳細

InnoDB ストレージ エンジンの主な機能には、挿入バッファ、二重書き込み、適応ハッシュインデック...

Vue2.0/3.0双方向データバインディングの実装原理の詳細説明

Vue2.0/3.0双方向データバインディングの実装原理双方向データバインディングとは、データの変更...