Vue フィルターの使用とタイムスタンプ変換の問題

Vue フィルターの使用とタイムスタンプ変換の問題

この記事は、Huawei Cloud コミュニティ「3 分で Vue フィルターとタイムスタンプ変換をマスター」から共有されたもので、著者は Aurora Night です。 。

1. 概念をすぐに認識する:

みなさんこんにちは。Vue のフィルターはよく知られているポイントです。以下では、タイムスタンプ変換の例を使用して、フィルターをすばやく使用する方法を説明します。

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

簡単に言うと、フィルター内に処理関数を定義し、パイプ文字「|」の後に関数名を記述すると、パイプ文字「|」の前のカスタマイズされたデータが処理され、カスタマイズされたデータが自動的にフィルター関数のパラメータになります。

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

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

フィルターは主にローカル フィルターとグローバル フィルターに分けられます。詳細については以下を参照してください。

2. ローカルフィルター:

1. ローカル フィルターは、コンポーネントのオプションで定義され、そのコンポーネントでのみ使用できるフィルターです。私たちの一般的な開発では、時間バックエンドは通常、フロントエンドが独自に処理するためのタイムスタンプのみを返します。たとえば、次の例では、タイムスタンプを日付形式に変換するフィルターを定義します (手順に注意してください)。

<テンプレート>
  <div>
    <!-- 4. データをレンダリングしてフィルターを設定する-->
    {{ 回 | 変換 }}
  </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  データ() {
    戻る {
      // 1. タイムスタンプデータをシミュレートする times: 1616959086000,
    };
  },
  // 2. フィルターを定義する: {
    //3. 処理関数を定義します。パラメータ値は処理されるデータです。変換: function (value) {
      // タイムスタンプを処理するために Date メソッドを呼び出します。 return new Date(value).toLocaleString();
    },
  },
};
</スクリプト>

その結果、変換は成功しました。

2. それだけでなく、フィルターは直列に接続することもできます。つまり、複数のフィルターを定義することができます。たとえば、次の例は、最初に変換関数を使用してtimesデータを処理して結果を取得し、次にagainChange関数を使用して前の結果を処理して最終結果を取得することと同じです。

 {{ 回 | 変換 | 再度変更 }}

基本的なデモンストレーションは次のとおりです。

<テンプレート>
  <div>
    <!-- 5. フィルターを追加-->
    {{ 回 | 変換 | 再度変更 }}
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ() {
    戻る {
      // 1. タイムスタンプデータをシミュレートする times: 1616959086000,
    };
  },
  // 2. フィルターを定義する: {
    //3. 処理関数を定義します。パラメータ値は処理されるデータです。変換: function (value) {
      // タイムスタンプを処理するために Date メソッドを呼び出します。 return new Date(value).toLocaleString();
    },
    //4. 別のフィルターを定義し、データの前に「Time is:」という単語を追加します。Change: function (value) {
      「時間は:」+ 値を返します。
    },
  },

};
</スクリプト> 

3. 同時に、フィルターはパラメータも受け取ることができます。たとえば、最初のポイントの例を改良し、タイムスタンプを指定可能な時間形式に変換し、希望する時間形式をフィルターパラメータとして使用します。具体的な使用方法は次のとおりです(手順に注意してください)。

<テンプレート>
  <div>
    <!-- 4. フィルターを追加し、パラメーターを渡し、指定された形式で時間を返します-->
    {{ times | conversion("yyyy-MM-dd HH:mm:ss 週 w") }}
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ() {
    戻る {
      // 1. タイムスタンプデータをシミュレートする times: 1616959086000,
    };
  },
  // 2. フィルターを定義する: {
    //3. 処理関数を定義します。パラメータ値は処理するデータ、フォーマットは入力パラメータの変換です: function (value, format) {
      // この変換方法は紹介しません。見てください。フィルターの使用がメインです。var date = new Date(value);
      関数 addZero(日付) {
        (日付<10)の場合{
          「0」+日付を返します。
        }
        返却日;
      }
      getTime = {
        yyyy: date.getFullYear(),
        yy: date.getFullYear() % 100,
        MM: ゼロを追加します(date.getMonth() + 1)、
        M: date.getMonth() + 1、
        dd: ゼロを追加します(date.getDate())、
        d: 日付.getDate(),
        HH: addZero(date.getHours())、
        H: date.getHours(),
        hh: addZero(date.getHours() % 12)、
        h: date.getHours() % 12,
        mm: ゼロを追加します(date.getMinutes())、
        m: date.getMinutes(),
        ss: ゼロを追加します(date.getSeconds())、
        s: date.getSeconds(),
        w: (関数() {
          let a = ["日", "月", "火", "水", "木", "金", "土"];
          [date.getDay()] を返します。
        })(),
      };
      for (let i in getTime) {
        フォーマット = format.replace(i, getTime[i]);
      }
      戻り形式;
    },
  },

};
</スクリプト>

結果は次のとおりです。

3. グローバルフィルター:

グローバルと呼ばれているので、Vue インスタンスを作成する前にフィルターをグローバルに定義するのが自然です。設定後は、すべてのコンポーネントが直接使用できます。通常はカスタム ファイルで定義されます。たとえば、タイムスタンプを処理する上記のフィルターは次のように使用されます。

1. src ディレクトリにフィルター フォルダーを定義し、そのフォルダーに filter.js ファイルを定義します。

2.filters.js ファイルのコードは次のとおりです。

const 変換 = 関数 (値、形式) {
      var date = 新しい Date(値);
      関数 addZero(日付) {
        (日付<10)の場合{
          「0」+日付を返します。
        }
        返却日;
      }
      getTime = {
        yyyy: date.getFullYear(),
        yy: date.getFullYear() % 100,
        MM: ゼロを追加します(date.getMonth() + 1)、
        M: date.getMonth() + 1、
        dd: ゼロを追加します(date.getDate())、
        d: 日付.getDate(),
        HH: addZero(date.getHours())、
        H: date.getHours(),
        hh: addZero(date.getHours() % 12)、
        h: date.getHours() % 12,
        mm: ゼロを追加します(date.getMinutes())、
        m: date.getMinutes(),
        ss: ゼロを追加します(date.getSeconds())、
        s: date.getSeconds(),
        w: (関数() {
          let a = ["日", "月", "火", "水", "木", "金", "土"];
          [date.getDay()] を返します。
        })(),
      };
      for (let i in getTime) {
        フォーマット = format.replace(i, getTime[i]);
      }
      戻り形式;
    }
  輸出 {
    変換 //エクスポートメソッドをここに記述}

3. main.js にグローバル フィルターを導入します。

グローバル フィルターを設定するための形式は、Vue.filter('フィルター名', 対応する処理関数); です。

'./filters/filters.js' から {conversion} をインポートします。
Vue.filter('変換', 変換);

4. コンポーネント内で直接使用できます。

<テンプレート>
  <div>
    <!-- 2. フィルターを追加し、指定された形式の時間にパラメータを渡します-->
    {{ times | conversion("yyyy-MM-dd HH:mm:ss 週 w") }}
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ() {
    戻る {
      // 1. タイムスタンプデータをシミュレートする times: 1616959086000,
    };
  },
};
</スクリプト>

同じ結果:

4. 拡張子:

フィルターは使用方法において計算プロパティと多少似ていることがわかりますが、それらの違いは何でしょうか?

  • フィルターはパラメータを渡すことができますが、これにアクセスすることはできません。キャッシュ機能はありません。同時に、フィルターを直列に接続することもできます。ローカルおよびグローバルに設定できます。フィルターは比較的単純で、明示的に呼び出された場合にのみトリガーされます。通常、テンプレートのレンダリングで使用されます。
  • Computed はパラメータを渡すことはできませんが、変数の操作のための this にはアクセスできます。背後にある処理ロジックは比較的複雑で、キャッシュ機能があり、コンポーネント内でより汎用的であるため、複雑なデータ変換、統計、その他のシナリオに適しています。

5. 要約:

上記はフィルターの一般的な内容です。一般的に、フィルターはローカル フィルターとグローバル フィルターに分けられます。ローカル フィルターはコンポーネント内で有効であり、グローバル フィルターはすべてのコンポーネントに対して有効です。その中で、複数のフィルターを設定し、フィルターにパラメータを渡すこともできます。一般的に、フィルターはいくつかの単純なデータ レンダリングに適用されます。

Vue フィルターとタイムスタンプ変換に関する記事はこれで終わりです。Vue フィルターとタイムスタンプ変換についてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  Linux ssh サーバーの構成コード例

>>:  MySQL 8.0 の binlog の詳細な説明

推薦する

MySQL インデックス失敗の原理

目次1. インデックス失敗の理由2. インデックスの秩序が崩れる状況を見てみましょう。 - インデッ...

MySQLでヘッダー付きのCSVファイルをエクスポートする方法

公式ドキュメント http://dev.mysql.com/doc/refman/5.7/en/se...

MySQL DATE_FORMAT関数の使用

タオバオが、ダブル11に最も多くの注文をした2人のユーザー、ユーザー1:「ショッピングの皇帝、陳哈哈...

WeChatアプレットトラック再生の実装と遭遇した落とし穴の詳細な説明

WeChat アプレットの軌跡再生では、主に線描画操作にポリラインを使用し、車の移動操作にマーカーを...

jsを使用して簡単なスネークゲームを書く

この記事では、参考までに、jsで書かれたシンプルなスネークゲームの具体的なコードを紹介します。具体的...

Vueプロジェクトでコンポーネントをカプセル化する簡単な手順

目次序文Toastコンポーネントをカプセル化する方法ユースケース具体的な実装要約する序文ビジネスが発...

VMware での Ubuntu と Windows 間のファイル共有

この記事では、VMware 環境下で Ubuntu と Windows 間でファイルを共有する方法を...

MySQL での select、distinct、limit の使用

目次1. はじめに2. 選択2.1 単一列のクエリ2.2 複数の列のクエリ2.3 すべての列をクエリ...

Firefox または IE でスパン幅が決定されない場合の解決策

コードをコピーコードは次のとおりです。 <html xmlns="http://ww...

Nginx 1つのドメイン名で複数のプロジェクトにアクセスする方法の例

背景最近、複数のプロジェクトを展開する際に、1 つのドメイン名で複数のプロジェクトにアクセスする方法...

CSS3 ボタン境界アニメーションの実装

まず効果を見てみましょう: html <a href="#"> &l...

EclipseでTomcatを作成する原理の詳細な説明

ローカルEclipse上にTomcatサーバーを作成する場合、 tomcaインストールディレクトリの...

VMware+centOS 8 で http プロトコルに基づく Git サービスを構築する方法

目次1. 原因2. デバイス情報3. 準備4. Apacheをインストールする5. gitを設定する...

JavaScript 組み込みオブジェクトの概要

目次1. 組み込みオブジェクト2. 数学オブジェクト1. Mathオブジェクトの使用2. 指定された...

Vueでミックスインを使用する方法

目次序文使い方要約する序文Vue にはコードの再利用に使われる mixins という設定項目がありま...