Vueカスタム命令の詳細な説明

Vueカスタム命令の詳細な説明

Vueカスタムディレクティブ

カスタムディレクティブ

ページが読み込まれたときに要素にフォーカスを当てるために使用されるグローバルディレクティブv-focusを登録します。

<!DOCTYPE html>
<html>
	<ヘッド>
		<メタ文字セット="utf-8">
		<タイトル></タイトル>
		<script src="../js/vue.js"></script>
	</head>
	<本文>
		<div id="アプリ">
			<v-fo を入力>
		</div>
		<スクリプト>
            // カスタムディレクティブを登録する Vue.directive('fo',{
				挿入:function(el){
                    // 要素にフォーカス el.focus()
				}
			})
			新しいVue({
				el: '#app'
			})
		</スクリプト>
	</本文>
</html>
 

画像-20211112151122161

インターフェースを開き、入力ボックスに直接カーソルを置きます

フック機能

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

  • bind : ディレクティブが最初に要素にバインドされるときに 1 回だけ呼び出されます。このフック関数は、バインド中に 1 回実行される初期化アクションを定義するために使用できます。
  • inserted : バインドされた要素が親ノードに挿入されたときに呼び出されます (親ノードが存在する場合に呼び出すことができますが、必ずしもドキュメント内にあるとは限りません)。
  • update : バインドされた値が変更されたかどうかに関係なく、バインドされた要素が配置されているテンプレートが更新されたときに呼び出されます。更新前後のバインディング値を比較することで、不要なテンプレートの更新を無視できます。
  • componentUpdated : バインドされた要素のテンプレートが更新サイクルを完了したときに呼び出されます。
  • unbind : ディレクティブが要素からアンバインドされたときに 1 回だけ呼び出されます。

フック関数のパラメータは主に以下のとおりです。

  • el : 命令がバインドされる要素。これを使用して DOM を直接操作できます。
  • binding : 以下のプロパティを含むオブジェクト
  • name : v- プレフィックスを除いたディレクティブの名前。
  • value : ディレクティブのバインディング値。たとえば、v-my-directive="1+1" の場合、値は 2 になります。
  • oldValue : ディレクティブにバインドされた以前の値。値が変更されたかどうかに関係なく、update フックと componentUpdated フックでのみ使用できます。
  • expression : バインディング値の式または変数名。たとえば、v-my-directive="1+1" の場合、式の値は "1+1" になります。
  • arg : ディレクティブに渡されるパラメータ。たとえば、v-my-directive:foo の場合、arg の値は "foo" です。
  • modifiers : 修飾子を含むオブジェクト。たとえば、 v-my-directive.foo.bar の場合、修飾子オブジェクト modifiers の値は {foo: true, bar: true} になります。
  • vnode : Vue コンパイルによって生成される仮想ノード。
  • oldVnode : 以前の仮想ノード。update フックと componentUpdated フックでのみ使用できます。

出力関連属性

<!DOCTYPE html>
<html>
	<ヘッド>
		<メタ文字セット="utf-8">
		<タイトル></タイトル>
		<script src="../js/vue.js"></script>
	</head>
	<本文>
		<div id="app" v-hh:abc="mess">
		</div>
		<スクリプト>
			Vue.directive('hh',{
				バインド: 関数(el,binding,vnode){
					var s = JSON.stringify
					el.innerHTML = 'name:'+s(binding.name)+'<br>'+
					'値:'+s(binding.value)+'<br>'+
					'式:'+s(binding.expression)+'<br>'+
					'引数:'+s(binding.arg)+'<br>'+
					'修飾子:'+s(binding.modifiers)+'<br>'+
					'vnode キー:'+Object.keys(vnode).join(',')
				}
			})
			新しいVue({
				el:'#app',
				データ:{
					混乱:'abc'
				}
			})
		</スクリプト>
	</本文>
</html>
 

画像-20211112163153199

アプリケーション例

<!DOCTYPE html>
<html>
	<ヘッド>
		<メタ文字セット="utf-8">
		<タイトル></タイトル>
		<script src="../js/vue.js"></script>
	</head>
	<本文>
		<div id="アプリ">
			<div v-hh="{text:'123',c:'blue'}"></div>
		</div>
		<スクリプト>
			Vue.directive('hh',function(el,binding){
				el.innerHTML=バインディング値テキスト
				el.style.color=バインディング値.c
			})
			新しいVue({
				el:'#app'
			})
		</スクリプト>
	</本文>
</html>
 

画像-20211112164831459

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • vue グローバルカスタム命令とローカルカスタム命令の使用
  • 要素のドラッグを実装するための Vue カスタム命令に関する詳細なコード
  • Vue3のカスタムディレクティブの書き方
  • Vue の 4 つのカスタム命令の説明と使用例
  • vue3 カスタムディレクティブの詳細
  • Vueカスタムディレクティブとその共通フック関数の説明

<<:  ホームページのデザインはウェブデザイナーのレベルを最もよく反映する

>>:  異なるブラウザ間で互換性のあるテキスト配置を実現する CSS

推薦する

1 分で Nginx のバージョンをスムーズにアップグレードおよびロールバックする方法

今日は、企業の実際の本番環境でよく遭遇する、Nginx を新しいバージョンにアップグレードし、古いバ...

CSS で平均レイアウトを実現するためにネガティブ マージン テクノロジーを使用する方法

通常、IE ブラウザでの CSS の互換性の問題を解決するために、フロート レイアウトが使用されます...

docker で golang イメージに基づいて ssh サービスを構築する方法

以下は、docker の golang イメージに基づいて ssh サービスを構築するためのコードで...

MySQL 権限制御の詳細な説明

目次mysql 権限制御権限システムテーブル変更後にMySQLの権限を有効にする方法権限の付与と取り...

Dockerイメージ解析ツールのダイブ原理解析

今日は、Docker イメージ、各レイヤーの内容を調べ、Docker/OCI イメージのサイズを縮小...

Docker は固定コンテナ IP アドレスを実現するためにカスタム ネットワークを作成します。

デフォルトのブリッジ ネットワークのため、コンテナーを再起動すると IP アドレスが変更されます。シ...

SQL グループ化により重複を削除し、他のフィールドで並べ替える

必要:あるフィールドの同一項目を結合し、別の時間フィールドで並べ替えます。例:初めに テーブルから都...

WeChat パブリック アカウントの録音ファイルを再生して保存します (amr ファイルを mp3 に変換)

目次オーディオトランスコーディングツール原理JAVE プロジェクトの問題このプロジェクトの特徴拡張機...

MySQL の binlog_format モードと設定の詳細な分析

MySQL レプリケーションには、SQL ステートメント ベースのレプリケーション (SBR)、行ベ...

VirtualBox を使用して Linux クラスターをシミュレートする方法

1. ホストMacbookにHOSTをセットアップする前回のドキュメントでは仮想マシンの静的 IP ...

HTML マルチメディア アプリケーション: Web ページにフラッシュ アニメーションと音楽を挿入する

1. HTML_falshアニメーションでのマルチメディアの応用(WebページへのFlashアニメー...

Vue におけるキープアライブ マルチレベル ルーティング キャッシュの問題

目次1. 問題の説明2. 原因分析3. 解決策4. 処理1. 問題の説明調整センターでは、最後の 2...

Nginx+ModSecurity セキュリティモジュールの導入

目次1. ダウンロード2. 展開1.Nginxのデプロイメント2. ModSecurityの展開3....

ハイパーリンクに関するいくつかの質問

<br />ポテトチップスパーティーのこのエピソードに参加して、何人かの友達に会えてとて...

HTML テーブルのオーバーフローの解決方法

テーブルが広い場合は、あふれてしまう可能性があります。たとえば、左と右の 2 つの div がありま...