目次
一、全局过滤器
二、组件过滤器
ホームページ ウェブフロントエンド Vue.js Vue でフィルターを使用する方法を段階的に理解していきますか? 2 つの使用法の簡単な分析

Vue でフィルターを使用する方法を段階的に理解していきますか? 2 つの使用法の簡単な分析

Mar 29, 2022 pm 08:08 PM
vue

Vue中怎么使用filters过滤器?本篇文章手把手带大家了解一下Vue中filters过滤器的用法,介绍filters过滤器的两种使用方法,希望对大家有所帮助!

Vue でフィルターを使用する方法を段階的に理解していきますか? 2 つの使用法の簡単な分析

Vue.js 允许我们自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号({undefined{ }})插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示。

<!-- 在双花括号中 -->
<div>{{ message | capitalize }}</div>
 
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
ログイン後にコピー

一、全局过滤器

定义一个全局过滤器很简单,只需要导出一个方法即可。

使用的时候很简单,只需要在入口文件全局引入此过滤器即可,使用 Vue.filter(key, value) 引入。

比如,Java后端返回的时间戳精确到秒,而JS中的时间戳是用毫秒表示,则可以定义一个转换时间戳的全局过滤器:

//main.js
import Vue from &#39;vue&#39;
Vue.filter(&#39;millisecond&#39;, (value) => {
  if (!value) return &#39;&#39;
  value = value.toString()
  return value.charAt(0).toUpperCase() + value.slice(1)
})
ログイン後にコピー

在需要使用的组件使用:

<div>{{1516101106 | millisecond}}</div>
ログイン後にコピー

全局过滤器之单一挂载

/**
 * dateTmp:要过滤的值
 * fmtTmp:传入的参数,可接收多个参数
 */
<template>
   <!-- 2021-12-20 19:14:18 -->
  <div>{{ 1639998858000 | dateFormat("yyyy/MM/dd HH:mm:ss") }}</div>
</template>
 
Vue.filter(&#39;dateFormat&#39;, function (dateTmp, fmtTmp) {
  let fmt = fmtTmp
  let date = dateTmp
 
  if (!fmt) {
    fmt = &#39;yyyy.MM.dd&#39;
  }
  if (!(date instanceof Date)) {
    date = new Date(date)
  }
  let o = {
    &#39;M+&#39;: date.getMonth() + 1, // 月份
    &#39;d+&#39;: date.getDate(), // 日
    &#39;h+&#39;: date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, // 小时
    &#39;H+&#39;: date.getHours(), // 小时
    &#39;m+&#39;: date.getMinutes(), // 分
    &#39;s+&#39;: date.getSeconds(), // 秒
    &#39;q+&#39;: Math.floor((date.getMonth() + 3) / 3), // 季度
    &#39;S&#39;: date.getMilliseconds() // 毫秒
  }
  let week = {
    &#39;0&#39;: &#39;日&#39;,
    &#39;1&#39;: &#39;一&#39;,
    &#39;2&#39;: &#39;二&#39;,
    &#39;3&#39;: &#39;三&#39;,
    &#39;4&#39;: &#39;四&#39;,
    &#39;5&#39;: &#39;五&#39;,
    &#39;6&#39;: &#39;六&#39;
  }
 
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + &#39;&#39;).substr(4 - RegExp.$1.length))
  }
  if (/(E+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? &#39;星期&#39; : &#39;周&#39;) : &#39;&#39;) + week[date.getDay() + &#39;&#39;])
  }
  for (var k in o) {
    if (new RegExp(&#39;(&#39; + k + &#39;)&#39;).test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((&#39;00&#39; + o[k]).substr((&#39;&#39; + o[k]).length)))
    }
  }
  return fmt
});
ログイン後にコピー

全局过滤器之批量挂载

//定义方法
//filters.js
export function slice (temp,num) {
    return temp.slice(0,num);
}
ログイン後にコピー
//挂载
//main.js
import * as filters from &#39;@/assets/js/filters&#39;;
 
Object.keys(filters).forEach(key => {
    Vue.filter(key, filters[key]);
});
ログイン後にコピー
//调用
<!-- 1234 -->
<div>{{ &#39;123456&#39; | slice(4) }} </div>
ログイン後にコピー

二、组件过滤器

组件过滤器更简单,只需在对应组件中定义 filters 即可,不过只针对本组件有效。

比如定义一个首字母大写的过滤器:

//定义方法
export default {
  filters: {
    capitalize: function (value) {
      if (!value) return &#39;&#39;
      value = value.toString()
      return value.charAt(0).toUpperCase() + value.slice(1)
    }
  }
}
ログイン後にコピー

例子例子

<template>
  <!-- 我要被过... -->
  <div>{{ msg | setSize }}</div>
</template>
 
<script>
export default {
  data() {
    return {
      msg: "我要被过滤",
    };
  },
  filters: {
    setSize(value) {
      if (value.length > 4) {
        return value.splice(0, 4) + "...";
      } else {
        return value;
      }
    },
  },
};
</script>
ログイン後にコピー

(学习视频分享:vuejs教程web前端

以上がVue でフィルターを使用する方法を段階的に理解していきますか? 2 つの使用法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

VUEのボタンに関数を追加する方法 VUEのボタンに関数を追加する方法 Apr 08, 2025 am 08:51 AM

HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

VueでBootstrapの使用方法 VueでBootstrapの使用方法 Apr 07, 2025 pm 11:33 PM

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

vue.jsでJSファイルを参照する方法 vue.jsでJSファイルを参照する方法 Apr 07, 2025 pm 11:27 PM

vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

VueでWatchの使用方法 VueでWatchの使用方法 Apr 07, 2025 pm 11:36 PM

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

Vueによる前のページに戻る方法 Vueによる前のページに戻る方法 Apr 07, 2025 pm 11:30 PM

vue.jsには、前のページに戻る4つの方法があります。$ router.go(-1)$ router.back()outes&lt; router-link to =&quot;/&quot; Component Window.history.back()、およびメソッド選択はシーンに依存します。

Vue Multi-Page開発とはどういう意味ですか? Vue Multi-Page開発とはどういう意味ですか? Apr 07, 2025 pm 11:57 PM

VUEマルチページ開発は、VUE.JSフレームワークを使用してアプリケーションを構築する方法です。アプリケーションは別々のページに分割されます。コードメンテナンス:アプリケーションを複数のページに分割すると、コードの管理とメンテナンスが容易になります。モジュール性:各ページは、簡単に再利用および交換するための別のモジュールとして使用できます。簡単なルーティング:ページ間のナビゲーションは、単純なルーティング構成を介して管理できます。 SEOの最適化:各ページには独自のURLがあり、SEOに役立ちます。

Vueのバージョンを照会する方法 Vueのバージョンを照会する方法 Apr 07, 2025 pm 11:24 PM

Vue Devtoolsを使用してブラウザのコンソールでVueタブを表示することにより、Vueバージョンを照会できます。 NPMを使用して、「NPM List -G Vue」コマンドを実行します。 package.jsonファイルの「依存関係」オブジェクトでVueアイテムを見つけます。 Vue CLIプロジェクトの場合、「Vue -Version」コマンドを実行します。 &lt; script&gt;でバージョン情報を確認してくださいVueファイルを参照するHTMLファイルにタグを付けます。

Function Intercept Vueの使用方法 Function Intercept Vueの使用方法 Apr 08, 2025 am 06:51 AM

VUEの関数傍受は、指定された期間内に関数が呼び出され、パフォーマンスの問題を防ぐ回数を制限するために使用される手法です。実装方法は次のとおりです。LodashLibrary:Import {Debounce}から「Lodash」からインポート。 debounce関数を使用して、インターセプト関数を作成します。インターセプト関数を呼び出すと、制御関数は500ミリ秒でせいぜい1回呼び出されます。

See all articles