Vue フィルターの実装と適用シナリオの詳細な説明

Vue フィルターの実装と適用シナリオの詳細な説明

1. 簡単な紹介

Vue.js を使用すると、一般的なテキストの書式設定に使用できる独自のフィルターを定義できます。

フィルターは、二重中括弧補間と v-bind 式の 2 つの場所で使用できます (後者は 2.1.0 以降でサポートされています)。

フィルターは、JavaScript 式の最後に追加する必要があります。これは、「パイプ」記号で示されます。

<!-- 二重中括弧内 -->
{{ メッセージ | フィルター }}

<!-- `v-bind` 内 -->
<div v-bind:msg="メッセージ | フィルター"></div>

フィルター関数は常に最初の引数として式の値を受け取ります。

上記の例では、フィルター関数は最初の引数としてメッセージの値を受け取ります。

1.1 フィルターは直列に接続できる

{{ メッセージ | フィルターA | フィルターB }}

この例では、filterA は単一のパラメータを受け入れるフィルタ関数として定義されています。式 message の値は、パラメータとして関数に渡されます。次に、単一のパラメータを受け取るように定義されているフィルタ関数 filterB を呼び出し、filterA の結果を filterB に渡します。

1.2 フィルターはパラメータを受け取ることができるJavaScript関数です

{{ メッセージ | filterA('arg1', arg2) }}

filterA は、3 つのパラメータを受け入れるフィルタ関数として定義されます。メッセージの値は最初のパラメーター、通常の文字列 'arg1' は 2 番目のパラメーター、式 arg2 の値は 3 番目のパラメーターです。

2. vue-cliでグローバルフィルターを定義する

構文: Vue.filter( filterName, ( ) => { return // データ処理結果} )

例えば:

<div id="アプリ">
  <h3>{{ユーザー名 | 追加名}}</h3>
</div>
<スクリプト>
// パラメータ 1: フィルタの名前、つまりパイプ文字の後の処理関数です。
// パラメータ2: 処理関数、処理関数のパラメータは上記と同じ	
Vue.filter("addName",(値)=>{											            
    「私の名前は」+値を返す
})
vm = new Vue({
    el:"#アプリ",
  	データ:{
     ユーザー名:"シャオミン" 
    }
})
</スクリプト>

2.1 実際の開発と使用

グローバル フィルターは、データの変更によく使用されます。通常は、処理関数を抽出して .js ファイルに配置します。

// filter.js ファイルレット filterPrice = (値) => {
	「受け取った金額」+「値」+「元」を返す
}
filterDate = (値) => {
    戻り値 + '日'
}

デフォルトをエクスポート {filterPrice,filterDate}

上記の filter.js ファイルを main.js にインポートします。filter.js ファイルは任意のコンポーネントにインポートすることもできますが、グローバル フィルターの場合は main.js で定義するのが最適です。インポートされるのはオブジェクトなので、Object.keys() メソッドを使用してキーの配列を取得し、データを走査して、キーをグローバル フィルターの名前にし、その後にキーに対応する処理関数を続けます。こうすることで、グローバル フィルターを任意のコンポーネントで使用できるようになります。

//メイン.js
 
// 以下にインポートする方法が 2 つあります。最初の方法をお勧めします。import * as filters from './utils/filter/filter'
// './utils/filter/filter' から {filterPrice,filterDate} をインポートします
 
console.log(フィルター)
 
Object.keys(filters.default).forEach((item)=>{
  Vue.filter(アイテム、フィルター.default[アイテム])
})
 
新しいVue({
  ルーター、
  店、
  レンダリング: h => h(App),
}).$mount('#app')

3. コンポーネントでグローバル フィルターを使用する:

//テスト.vue

<テンプレート>
  <div>
    <input type="text" v-model="filterCount" >
    <div>{{フィルター数 | フィルター価格}}</div>
    <div>{{フィルターカウント | フィルター日付}}</div>
  </div>  
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ(){
    戻る {
      フィルター数:1500
    }
  },
}
</スクリプト>

3. vue-cliでローカルフィルターを定義する

//テスト.vue

<テンプレート>
  <div>
    <input type="text" v-model="filterCount" >
    <div>{{フィルター数 | フィルター価格}}</div>
    <div>{{フィルターカウント | フィルター日付}}</div>
  </div>  
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ(){
    戻る {
      フィルター数:1500
    }
  },
}
</スクリプト>

4. 一般的な使用シナリオ

4.1 日付(時刻)のフォーマット

シナリオ 1: バックエンドから送信された時刻: 2019-11-19T04:32:46Z

moment.jsをインストールする

// メイン.js

'moment' から moment をインポートする
// グローバルフィルターを定義 - 時間形式 Vue.filter('format',function(val,arg){
  if(!val) 戻り値;
  val = val.toString()
  moment(val).format(arg) を返す
})

//テスト.vue

<テンプレート>
   <div class="filter">{{時間 | フォーマット('YYYY-MM-DD HH:MM:SS')}}</div>  
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ(){
    戻る {
      時刻:'2019-11-19T04:32:46Z'
    }
  }
}
</スクリプト>

要約する

Vue フィルターの実装と適用シナリオに関するこの記事はこれで終わりです。より関連性の高い Vue フィルターの実装と適用コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • VUEのデータプロキシとイベントの詳細な説明
  • Vue の双方向イベントバインディング v-model の原理についての簡単な説明
  • Vue の動的コンポーネントとグローバル イベント バインディングの概要の詳細な説明
  • Vue フィルターの使用とタイムスタンプ変換の問題
  • Vue のデータとイベントのバインディングとフィルターの詳細な説明

<<:  Navicat による MySQL パーティショニングの実践

>>:  Windows システムに VirtualBox と Ubuntu 16.04 をインストールするための詳細なチュートリアル

推薦する

Vueはvue-quill-editorリッチテキストエディタを使用し、画像をサーバーにアップロードします。

目次1. 準備2. グローバルコンポーネント quill-editor を定義する1. テンプレート...

Vueカスタムv-has命令、ボタン権限判定の手順

目次アプリケーションシナリオ簡単に言えば、カスタム指示基本概念グローバルカスタマイズローカルカスタマ...

JavaScript でプロトタイプ パターンを実装する方法

概要プロトタイプ パターンは、プロトタイプ インスタンスによって作成されるオブジェクトの型を指し、こ...

モバイルプラットフォーム開発におけるメタタグの適用の詳細な説明

デスクトップ プラットフォームの Web レイアウトのメタ タグは誰もがよく知っています。これは常に...

Centos7 で ZooKeeper3.4 ミドルウェアを構築するための一般的なコマンドの概要

1.ダウンロードして解凍する1. Zookeeperの紹介分散サービス フレームワークとして、Zoo...

Linux (Ubuntu 18.04) に Anaconda をインストールする詳細な手順

Anaconda は、大規模なデータ処理、予測分析、科学計算のための最も人気のある Python デ...

mysql8.0 でユーザーを作成して権限を付与する際のエラーの解決方法の詳細な説明

質問1:エラーを報告する書き込み方法: GRANT OPTION を使用して、'123123...

Docker+Selenium Grid に基づく技術アプリケーションをテストするためのサンプル コード

Selenium Grid の紹介Selenium Grid のいくつかの新しい機能は、今後リリース...

Filebeat を使用して Nginx ログを収集する方法

Nginx ログは、ユーザーの住所の場所や行動プロファイルなどを分析するために使用できます。Elas...

vue-cli で stimulsoft.reports.js を使用する詳細なチュートリアル

vue-cli は stimulsoft.reports.js を使用します (ナニーレベルのチュー...

MySQLはトリガーを使用してデータベース内のテーブルの行制限を解決します。詳細な説明と例

MySQLはトリガーを使用してデータベース内のテーブルの行制限を解決します。詳細な説明と例最近のプロ...

よく理解しましたかタグ 定義方法 使用方法

序文:今日、「<!DOCTYPE> タグを注意深く理解しましたか?」と尋ねられました。私...

WeChatアプレット実装アンカー位置決め機能の例

序文小規模なプログラムの開発では、リストをスクロールして表示する必要性に遭遇することがよくあります。...

MySQL の NOT IN 充填ピットの NULL 列の問題の解決方法

以前、会社で小さな機能に取り組んでいたとき、特定の状況でデータがいくつあるかを数えてから問題を修正し...

Win 8 以降での最新の MySQL バージョン 5.7.17 (64 ビット ZIP グリーン バージョン) のインストールと展開のチュートリアル

まず、ブロガーはコミュニティ バージョンをプレイしていますが、学習とテストにはこれで十分です。 Bl...