欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue過濾器filters的用法及時間戳轉(zhuǎn)換問題

 更新時間:2021年09月24日 09:18:56   作者:華為云開發(fā)者社區(qū)  
Vue的filters過濾器是比較常見的一個知識點(diǎn),下面我將結(jié)合時間戳轉(zhuǎn)換的例子帶你快速了解filters的用法,感興趣的朋友一起看看吧

本文分享自華為云社區(qū)《三分鐘掌握Vue過濾器filters及時間戳轉(zhuǎn)換》,作者:北極光之夜。。

一.速識概念:

大家好呀,Vue的filters過濾器是比較常見的一個知識點(diǎn),下面我將結(jié)合時間戳轉(zhuǎn)換的例子帶你快速了解filters的用法~

按照官方的活來說,Vue.js 允許你自定義過濾器,可被用于一些常見的文本格式化。過濾器可以用在兩個地方:雙花括號插值和 v-bind 表達(dá)式 (后者從 2.1.0+ 開始支持)。過濾器應(yīng)該被添加在 JavaScript 表達(dá)式的尾部,由“管道”符號指示。

簡單來說就是在filters過濾器里定義一個處理函數(shù),把函數(shù)名稱寫在管道符 “|” 后面,它就會處理管道符 “|” 前自定義的數(shù)據(jù),其中自定義的數(shù)據(jù)會自動成為過濾器函數(shù)的參數(shù)。

<!-- 在雙花括號中 -->
{{ message | capitalize }}

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

過濾器主要可以分為局部過濾器和全局過濾器,下面看詳細(xì)介紹。

二.局部過濾器:

1. 局部過濾器就是在一個組件的選項中定義本地的過濾器,只有該組件可以用。在我們一般開發(fā)中,對于時間后端一般只會返回一個時間戳讓前端自己處理,下面比如定義一個轉(zhuǎn)換時間戳為日期格式的過濾器(注意步驟):

<template>
  <div>
    <!-- 4. 渲染數(shù)據(jù),設(shè)置過濾器 -->
    {{ times | conversion }}
  </div>
</template>
<script>
export default {
  data() {
    return {
      // 1.模擬一個時間戳數(shù)據(jù)
      times: 1616959086000,
    };
  },
  // 2. 定義過濾器
  filters: {
    //3.定義一個處理函數(shù),參數(shù)value為要處理數(shù)據(jù)
    conversion: function (value) {
      //調(diào)用Date的方法,處理時間戳
      return new Date(value).toLocaleString();
    },
  },
};
</script>

結(jié)果,轉(zhuǎn)換成功:

2. 不僅如此,過濾器還可以串聯(lián),就是說可以定義多個過濾器,比如下面,相當(dāng)于先用 conversion函數(shù)處理 times 這個數(shù)據(jù)得出結(jié)果,然后繼續(xù)用 againChange函數(shù)處理前面的結(jié)果得出最終結(jié)果:

 {{ times | conversion | againChange }}

基本演示如下:

<template>
  <div>
    <!-- 5. 放過濾器 -->
    {{ times | conversion | againChange }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 1.模擬一個時間戳數(shù)據(jù)
      times: 1616959086000,
    };
  },
  // 2. 定義過濾器
  filters: {
    //3.定義一個處理函數(shù),參數(shù)value為要處理數(shù)據(jù)
    conversion: function (value) {
      //調(diào)用Date的方法,處理時間戳
      return new Date(value).toLocaleString();
    },
    //4.再定義一個過濾器,給數(shù)據(jù)前加上"時間為:"這幾個字
    againChange: function (value) {
      return "時間為:" + value;
    },
  },

};
</script>

3. 同時,過濾器也是可以接收參數(shù)的, 比如我們改進(jìn)第1小點(diǎn)的例子,把時間戳轉(zhuǎn)換為能指定格式的時間格式,將想要的時間格式作為過濾器參數(shù),具體用法如下(注意步驟):

<template>
  <div>
    <!-- 4. 放過濾器,同時傳參數(shù),返回指定格式的時間 -->
    {{ times | conversion("yyyy-MM-dd HH:mm:ss 星期w") }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 1.模擬一個時間戳數(shù)據(jù)
      times: 1616959086000,
    };
  },
  // 2. 定義過濾器
  filters: {
    //3.定義一個處理函數(shù),參數(shù)value為要處理數(shù)據(jù),format為傳入?yún)?shù)
    conversion: function (value, format) {
      //這個轉(zhuǎn)換方法就不介紹了,看看就行,過濾器用法為主
      var date = new Date(value);
      function addZero(date) {
        if (date < 10) {
          return "0" + date;
        }
        return date;
      }
      let getTime = {
        yyyy: date.getFullYear(),
        yy: date.getFullYear() % 100,
        MM: addZero(date.getMonth() + 1),
        M: date.getMonth() + 1,
        dd: addZero(date.getDate()),
        d: date.getDate(),
        HH: addZero(date.getHours()),
        H: date.getHours(),
        hh: addZero(date.getHours() % 12),
        h: date.getHours() % 12,
        mm: addZero(date.getMinutes()),
        m: date.getMinutes(),
        ss: addZero(date.getSeconds()),
        s: date.getSeconds(),
        w: (function () {
          let a = ["日", "一", "二", "三", "四", "五", "六"];
          return a[date.getDay()];
        })(),
      };
      for (let i in getTime) {
        format = format.replace(i, getTime[i]);
      }
      return format;
    },
  },

};
</script>

結(jié)果如下:

三.全局過濾器:

既然叫全局,那自然是在創(chuàng)建 Vue 實例之前全局定義過濾器,配置好后全部組件直接用就行。一般在自定義的一個文件里專門定義。比如還是上面的處理時間戳的過濾器,用法如下:

1.在src目錄下定義filters文件夾,同時在文件夾里定義一個filters.js文件:

2.filters.js文件代碼如下:

const conversion = function (value, format) {
      var date = new Date(value);
      function addZero(date) {
        if (date < 10) {
          return "0" + date;
        }
        return date;
      }
      let getTime = {
        yyyy: date.getFullYear(),
        yy: date.getFullYear() % 100,
        MM: addZero(date.getMonth() + 1),
        M: date.getMonth() + 1,
        dd: addZero(date.getDate()),
        d: date.getDate(),
        HH: addZero(date.getHours()),
        H: date.getHours(),
        hh: addZero(date.getHours() % 12),
        h: date.getHours() % 12,
        mm: addZero(date.getMinutes()),
        m: date.getMinutes(),
        ss: addZero(date.getSeconds()),
        s: date.getSeconds(),
        w: (function () {
          let a = ["日", "一", "二", "三", "四", "五", "六"];
          return a[date.getDay()];
        })(),
      };
      for (let i in getTime) {
        format = format.replace(i, getTime[i]);
      }
      return format;
    }
  export {
    conversion //通過此處導(dǎo)出方法
}

3.在main.js里引入全局過濾器:

設(shè)置全局過濾器格式就是Vue.filter(‘過濾器名稱',對應(yīng)處理函數(shù));

import {conversion} from './filters/filters.js'
Vue.filter('conversion', conversion);

4.在某個組件直接可以使用:

<template>
  <div>
    <!-- 2. 放過濾器,同時傳參,為指定格式時間 -->
    {{ times | conversion("yyyy-MM-dd HH:mm:ss 星期w") }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 1.模擬一個時間戳數(shù)據(jù)
      times: 1616959086000,
    };
  },
};
</script>

一樣的結(jié)果:

四.擴(kuò)展:

可以發(fā)現(xiàn),filters過濾器在用法上與computed計算屬性有點(diǎn)像,那它們區(qū)別是什么呢?

  • filters 可以傳參,但是不可以訪問this。不具備緩存功能。同時filters可以串聯(lián)??梢栽诰植亢腿衷O(shè)置。filter比較簡單,只在顯式調(diào)用時觸發(fā),一般應(yīng)用在模板渲染上。
  • computed不可以傳參,可以訪問this,針對的是變量的操作。背后的處理邏輯比較復(fù)雜,具有緩存能力,在組件內(nèi)普適性更強(qiáng),因此適用于復(fù)雜的數(shù)據(jù)轉(zhuǎn)換、統(tǒng)計等場景。

五.總結(jié):

上面就是filters過濾器的大致內(nèi)容了。總的來說,filters過濾器可以分為局部過濾器和全局過濾器。局部過濾器在組件內(nèi)部有效,全局過濾器在每個組件都有效。其中,可以設(shè)置多個過濾器和傳參數(shù)給過濾器。一般過濾器應(yīng)用在一些簡單的數(shù)據(jù)渲染上。

到此這篇關(guān)于Vue過濾器filters及時間戳轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Vue過濾器filters時間戳轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • antd table按表格里的日期去排序操作

    antd table按表格里的日期去排序操作

    這篇文章主要介紹了antd table按表格里的日期去排序操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 使用v-memo緩存模板子樹提高應(yīng)用性能詳解

    使用v-memo緩存模板子樹提高應(yīng)用性能詳解

    這篇文章主要為大家介紹了使用v-memo緩存模板子樹提高應(yīng)用性能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • vue頁面右下角添加懸浮按鈕組件的方法代碼

    vue頁面右下角添加懸浮按鈕組件的方法代碼

    這篇文章主要介紹了vue頁面右下角添加懸浮按鈕組件的方法代碼,在Vue項目中,通過在頂層路由文件中添加代碼,可以實現(xiàn)頁面左下角懸浮按鈕的功能,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • 單頁面vue引入百度統(tǒng)計的使用方法示例詳解

    單頁面vue引入百度統(tǒng)計的使用方法示例詳解

    在網(wǎng)上各種找不到vue項目加入百度統(tǒng)計的代碼與實現(xiàn),自己探索出了一套加入百度統(tǒng)計的辦法,下面這篇文章主要給大家介紹了關(guān)于單頁面vue引入百度統(tǒng)計的使用方法,需要的朋友可以參考下
    2018-10-10
  • vue實現(xiàn)短信驗證碼輸入框

    vue實現(xiàn)短信驗證碼輸入框

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)短信驗證碼輸入框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 使用async-validator編寫Form組件的方法

    使用async-validator編寫Form組件的方法

    本篇文章主要介紹了使用 async-validator 編寫 Form 組件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • vue+echarts圖表使用的問題記錄

    vue+echarts圖表使用的問題記錄

    由于在項目中需要對數(shù)據(jù)進(jìn)行可視化處理,也就是用圖表展示,眾所周知echarts是非常強(qiáng)大的插件,所以這篇文章主要給大家介紹了關(guān)于vue+echarts圖表使用的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 如何通過Vue3+Element?Plus自定義彈出框組件

    如何通過Vue3+Element?Plus自定義彈出框組件

    這篇文章主要給大家介紹了關(guān)于如何通過Vue3+Element?Plus自定義彈出框組件的相關(guān)資料,彈窗是前端開發(fā)中的一種常見需求,文中通過代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-05-05
  • vue項目打包部署流程分析

    vue項目打包部署流程分析

    這篇文章主要介紹了vue項目打包部署流程,本文通過實例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Vue?Hook?封裝通用型表格的詳細(xì)過程

    Vue?Hook?封裝通用型表格的詳細(xì)過程

    這篇文章主要介紹了Vue?Hook?封裝通用型表格,設(shè)計通用型表格組件首先,需要設(shè)計一個基礎(chǔ)的表格組件,它接受列配置、數(shù)據(jù)和分頁信息等參數(shù),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08

最新評論