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

推薦する

Mariadb リモート ログイン構成と問題解決

序文:インストール プロセスについては詳しく説明しません。問題に直接触れましょう。MySQL のリモ...

el-table のテーブルを最適化するために仮想リストを使用する方法についての簡単な説明

目次序文解決具体的な実装満たすべき前提条件質問序文テーブルをよく使用します。データ量が多い場合は直接...

VUE 応答性原理の詳細な説明

目次1. 応答原理の基盤2. コアオブジェクト: Dep と Watcher 3. 依存関係を収集し...

JavaScript に関する 6 つの奇妙で便利な点

目次1. 解体のヒント2. デジタルセパレーター3. try...catch...finally が...

Gitコミットログの変更方法のまとめ

ケース1: 最後の提出とプッシュなし次のコマンドを実行します。 git コミット --amend g...

mysql 8.0.19 win10 クイックインストールチュートリアル

このチュートリアルでは、参考までにMySQL 8.0.19のインストールチュートリアルを共有します。...

初めてDockerイメージを構築、実行、公開、取得するための詳細な手順

1. はじめに以前は、Python アプリケーションの作成を開始したい場合、最初のステップはマシンに...

Vue3でアイコンを使用する2つの例

目次1. SVGを使用する2. fontAwesomeを使用する3 ソース4 結論テクノロジースタッ...

Reactでaxiosを使用してリクエストを送信する一般的な方法

目次Reactにaxios依存関係をインストールして導入するGETリクエストにaxiosを使用するa...

Centos7 システムに k8s クラスターを展開するための詳細な紹介

目次1 バージョンと計画1.1 バージョン情報: 1.2 クラスター計画2. 展開1. ファイアウォ...

Nginx リバース プロキシ構成の完全なプロセス記録

1. 準備LinuxシステムにTomcatをインストールし、デフォルトのポート8080を使用してTo...

webpackを使用してTypeScriptコードをパッケージ化およびコンパイルする方法を教えます

TypeScript バンドルwebpack 統合通常、実際の開発では、ビルド ツールを使用してコー...

MySQL でインデックス構造として B+ ツリーを使用する利点は何ですか?

序文MySQL では、Innodb と MyIsam の両方がインデックス構造として B+ ツリーを...

Vueコンポーネントドキュメント生成ツールライブラリのメソッド

目次.vue ファイルの解析文書情報を抽出するコンポーネント名、説明、プロパティ、メソッド、モデルを...