您好,登錄后才能下訂單哦!
這篇文章主要介紹“Vue過濾器filters及時間戳轉換怎么掌握”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Vue過濾器filters及時間戳轉換怎么掌握”文章能幫助大家解決問題。
按照官方的活來說,Vue.js 允許你自定義過濾器,可被用于一些常見的文本格式化。過濾器可以用在兩個地方:雙花括號插值和 v-bind 表達式 (后者從 2.1.0+ 開始支持)。過濾器應該被添加在 JavaScript 表達式的尾部,由“管道”符號指示。
簡單來說就是在filters過濾器里定義一個處理函數,把函數名稱寫在管道符 “|” 后面,它就會處理管道符 “|” 前自定義的數據,其中自定義的數據會自動成為過濾器函數的參數。
<!-- 在雙花括號中 --> {{ message | capitalize }} <!-- 在 `v-bind` 中 --> <div v-bind:id="rawId | formatId"></div>
過濾器主要可以分為局部過濾器和全局過濾器,下面看詳細介紹。
1. 局部過濾器就是在一個組件的選項中定義本地的過濾器,只有該組件可以用。在我們一般開發中,對于時間后端一般只會返回一個時間戳讓前端自己處理,下面比如定義一個轉換時間戳為日期格式的過濾器(注意步驟):
<template> <div> <!-- 4. 渲染數據,設置過濾器 --> {{ times | conversion }} </div> </template> <script> export default { data() { return { // 1.模擬一個時間戳數據 times: 1616959086000, }; }, // 2. 定義過濾器 filters: { //3.定義一個處理函數,參數value為要處理數據 conversion: function (value) { //調用Date的方法,處理時間戳 return new Date(value).toLocaleString(); }, }, }; </script>
結果,轉換成功:
2. 不僅如此,過濾器還可以串聯,就是說可以定義多個過濾器,比如下面,相當于先用 conversion函數處理 times 這個數據得出結果,然后繼續用 againChange函數處理前面的結果得出最終結果:
{{ times | conversion | againChange }}
基本演示如下:
<template> <div> <!-- 5. 放過濾器 --> {{ times | conversion | againChange }} </div> </template> <script> export default { data() { return { // 1.模擬一個時間戳數據 times: 1616959086000, }; }, // 2. 定義過濾器 filters: { //3.定義一個處理函數,參數value為要處理數據 conversion: function (value) { //調用Date的方法,處理時間戳 return new Date(value).toLocaleString(); }, //4.再定義一個過濾器,給數據前加上"時間為:"這幾個字 againChange: function (value) { return "時間為:" + value; }, }, }; </script>
3. 同時,過濾器也是可以接收參數的, 比如我們改進第1小點的例子,把時間戳轉換為能指定格式的時間格式,將想要的時間格式作為過濾器參數,具體用法如下(注意步驟):
<template> <div> <!-- 4. 放過濾器,同時傳參數,返回指定格式的時間 --> {{ times | conversion("yyyy-MM-dd HH:mm:ss 星期w") }} </div> </template> <script> export default { data() { return { // 1.模擬一個時間戳數據 times: 1616959086000, }; }, // 2. 定義過濾器 filters: { //3.定義一個處理函數,參數value為要處理數據,format為傳入參數 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; }, }, }; </script>
結果如下:
既然叫全局,那自然是在創建 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 //通過此處導出方法 }
3.在main.js里引入全局過濾器:
設置全局過濾器格式就是Vue.filter(‘過濾器名稱’,對應處理函數);
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.模擬一個時間戳數據 times: 1616959086000, }; }, }; </script>
一樣的結果:
可以發現,filters過濾器在用法上與computed計算屬性有點像,那它們區別是什么呢?
filters 可以傳參,但是不可以訪問this。不具備緩存功能。同時filters可以串聯。可以在局部和全局設置。filter比較簡單,只在顯式調用時觸發,一般應用在模板渲染上。computed不可以傳參,可以訪問this,針對的是變量的操作。背后的處理邏輯比較復雜,具有緩存能力,在組件內普適性更強,因此適用于復雜的數據轉換、統計等場景。
關于“Vue過濾器filters及時間戳轉換怎么掌握”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。