Vueのフィルターとディレクティブの詳細な説明

Vueのフィルターとディレクティブの詳細な説明

Vueにはローカルフィルターとグローバルフィルターの2種類のフィルターがあります。

フィルターは、いくつかの一般的なテキスト書式設定に使用できます。フィルターは、二重中括弧補間と v-bind 式の 2 つの場所で使用できます (後者は 2.1.0 以降でサポートされています)。フィルターは、JavaScript 式の最後に追加する必要があります。これは、「パイプ」記号で示されます (公式ドキュメント)

<!-- 二重中括弧内 -->
{{ メッセージ | 大文字 }}

<!-- `v-bind` 内 -->
<div v-bind:id="rawId | formatId"></div>

1. パラメータなしでグローバルフィルタを定義する

Vue.filter('capitalize', function(msg){// msgは固定パラメータで、フィルタリングする必要があるデータです。if (!value) return ''
            値 = value.toString()
            戻り値.charAt(0).toUpperCase() + value.slice(1)
       })

2. パラメータ付きのグローバルフィルタを定義する

 <div id="アプリ">
            <p>{{ msg | msgFormat('クレイジー','--')}}</p>
        </div>

        <スクリプト>
            // msgFormat という名前の Vue グローバル フィルターを定義します
            Vue.filter('msgFormat', 関数(msg, arg, arg2) {
                // 文字列置換メソッドでは、最初のパラメータに文字列を書き込むだけでなく、通常の戻り値も定義できます msg.replace(/simple/g, arg+arg2)
            })
      </スクリプト>

3. ローカルフィルター

パラメータ付きおよびパラメータなしのローカル フィルターの定義と使用法は、グローバル フィルターの場合と同じです。唯一の違いは、ローカル フィルターが vue インスタンスで定義されていることです。それが動作する領域は、vueインスタンスによって制御される領域でもある

 // Vueインスタンスを作成し、ViewModelを取得します
            var vm = 新しい Vue({
                el: '#app',
                データ: {
                    メッセージ: 'メッセージ'
                },
                メソッド: {},
                //プライベートローカルフィルターを定義します。フィルターは現在のvueオブジェクトでのみ使用できます: {
                    データフォーマット(メッセージ) {
                        メッセージ+'xxxxx'を返します。
                    }
                }
            });

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

Vue には、v-model、v-show、v-html など、多くの組み込み命令がありますが、これらの命令では満足できない場合や、要素に特別な機能を追加したい場合があります。このような場合、Vue の非常に強力な機能であるカスタム命令を使用する必要があります。

始める前に、カスタム命令が解決する問題または使用シナリオは、通常の DOM 要素に対して低レベルの操作を実行することであるため、カスタム命令を盲目的に使用することはできないことを明確にする必要があります。

グローバル指令

Vue.directive('focus', {
  // バインドされた要素が DOM に挿入されると...
  挿入: 関数 (el) {
    // フォーカス要素 el.setAttribute('placeholder', 'これはカスタム命令によって追加されます')
    el.フォーカス()
  }
})

ローカル指示

ディレクティブ: {
  集中:
    // 挿入された命令の定義: function (el) {
      el.フォーカス()
    }
  }
}

使用

<input v-focus>

フック関数(両方ともオプション)

bind: ディレクティブが要素に最初にバインドされるときに 1 回だけ呼び出されます。ここで、1 回限りの初期化セットアップを実行できます。

挿入: バインドされた要素が親ノードに挿入されるときに呼び出されます (親ノードが存在することを保証するだけで、必ずしもドキュメントに挿入されているわけではありません)。

update: コンポーネントの VNode が更新されたときに呼び出されますが、子 VNode が更新される前に発生することもあります。命令の値は変更されている場合と変更されていない場合があります。ただし、更新前と更新後の値を比較することで、不要なテンプレートの更新を無視することができます (詳細なフック関数のパラメータについては以下を参照してください)。

componentUpdated: 命令が配置されているコンポーネントの VNode とその子 VNode がすべて更新された後に呼び出されます。

unbind: ディレクティブが要素からアンバインドされたときに 1 回だけ呼び出されます。

使用方法とパラメータ

順番に実行する

//カスタムディレクティブ Vue.directive('focus', {
  バインド: 関数 (el, バインディング, vnode) {
    コンソールログ("1")
  },
  挿入: 関数 (el, バインディング, vnode) {
    コンソールログ("2");
  },
  更新: 関数 (el, バインディング, vnode, oldVnode) {
    コンソールログ("3");
  },
  コンポーネント更新: 関数 (el、バインディング、vnode、oldVnode) {
    コンソールログ('4');
  },
  アンバインド: 関数 (el, バインディング, vnode) {
    コンソールログ('5');
  }
})

以上がVueにおけるフィルターとディレクティブの詳しい説明です。Vueにおけるフィルターとディレクティブについてさらに詳しく知りたい方は、123WORDPRESS.COM内の他の関連記事もぜひご覧ください!

以下もご興味があるかもしれません:
  • Vue フィルターの実装と適用シナリオの詳細な説明
  • Vueフィルターの使い方
  • Vueでグローバルフィルターをカプセル化する手順
  • フィルターvue.filtersの使い方
  • Vue のフィルターの適用シナリオの詳細な説明

<<:  Raspberry Pi msmtp と mutt のインストールと設定のチュートリアル

>>:  Docker 構成コンテナの場所とヒントのまとめ

推薦する

Antd+vueは円形属性フォームの動的検証のアイデアを実現します

必要な項目をループして検証するために、クエリ フォームのいくつかのプロパティを実装したいと考えていま...

MySQL ストレージ エンジン MyISAM と InnoDB の違いの概要

1. MySQLのデフォルトストレージエンジンの変更MySQL 5.1 より前のバージョンでは、デフ...

HTML マークアップ言語 - テーブルタグ

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

mysqlreplicate を使って MySQL マスタースレーブを素早く構築する方法

導入mysql-utilities ツールセットは、DBA のツールボックスとも言えるさまざまなツー...

HTML の長いテキストは、タグの幅を超えると自動的に切り捨てられます。

長いテキストを表示する場合、C# 側で文字をインターセプトする必要があることがよくありますが、長いテ...

CSS でフロートとマージンを混合するサンプルコード

最近の勉強で、GitHub でレイアウトの練習をいくつか見つけたのですが、レイアウトにまったく慣れて...

Nginx ロケーション ディレクティブ URI マッチング ルールの詳細な概要

1. はじめにロケーション命令は、http モジュールのコア構成です。事前に定義された URL マッ...

Linux 構成で MySQL データベースへのリモート接続が失敗する問題の解決方法

今日は、Linux でリモート アクセス用に MySQL データベースを構成する方法について質問があ...

MYSQLのバックアップデータのスケジュールクリアの特定の操作

1|0 背景プロジェクトの要件により、各月の履歴在庫データをアーカイブしてバックアップする必要があり...

Apache、Tomcat、Nginx サーバーの詳細な理解と比較分析

質問1件会社のサーバーはApacheを使用しており、バックエンドはPHP、サーバーはLinux C/...

MySQLレジストリをクリアする方法

具体的な方法: 1. [ win+r ] を押して実行ウィンドウを開き、「regedit」と入力して...

protobuf の簡単な紹介と Ubuntu 16.04 環境でのインストールチュートリアル

protobufの簡単な紹介Protobuf は、Google のオープンソースのシリアル化プロトコ...

LinuxにPHP7をインストールする方法の詳細な説明

Linux に PHP7 をインストールするにはどうすればいいですか? 1. 依存パッケージをインス...

MySQL 実践演習 シンプルなライブラリ管理システム

目次1. ソート機能2. データベースを準備する3. データベースに関連するエンティティクラスの構築...