亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

如何換個角度使用VUE過濾器詳解

2019-11-19 10:49:45
字體:
來源:轉載
供稿:網友

前言

過濾器在Vue中的主要用于文本格式化,如小寫轉大小,日期格式化等操作。官方對這個功能介紹也很簡單,不過確實很簡單,就一個函數而已。但最近在做兩款APP時,遇到一些特殊的需求。然后就對vue中的filter一些用法結合源碼好好的梳理了下。下邊我們以一個日期格式化展開討論。

1. 定義一個日期格式化函數

都9012了,我們就采用 ES Module的寫法,在vue初始化的項目src的文件中新建一個filters文件夾,并在其中添加DateFmt.js文件,代碼如下

export function DateFmt(date, fmt) {if (date == null) return null;var o = {  "M+": date.getMonth() + 1, // 月份  "d+": date.getDate(), // 日  "h+": date.getHours(), // 小時  "m+": date.getMinutes(), // 分  "s+": date.getSeconds(), // 秒  "q+": Math.floor((date.getMonth() + 3) / 3), // 季度  "S": date.getMilliseconds()};if (/(y+)/.test(fmt))  fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));for (var k in o)  if (new RegExp("(" + k + ")").test(fmt))    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));return fmt;}

2. 使用過濾器 DateFmt

定義好函數后,我們采用全局注冊filter的方式。在main.js中使用import { DateFmt } from '@/filters/DateFmt.js' 導入我們上邊定義的函數。 使用Vue.filter("DateFmt", DateFmt) 完成filter全局注冊。

在components文件夾中,添加我們的測試組件DateFormat.vue,在該文件template>div節點下輸入{{new Date()|DateFmt('yyyy-MM-dd hh:mm:ss')}} 然后在app.vue引入我們剛新添加的組件,運行,你就會在看到當前日期已經按照我們需要的格式顯示在網頁上。是的,就是這么簡單,那完了么?

3. 在JS中使用 DateFmt

好奇的朋友會發現,我們定義的filter都是在template中使用的,那我如何在js代碼中使用呢?當然,在開發這兩個app期間,減少數據轉換的次數,有了這樣的需求。

3.1 在組件頁面導入函數

回到開頭,我們強調了一下,過濾器其實就是一個函數。既然是函數,那引入就好了。所以在我們最初建立 DateFormat.vue 單文件組件的<script>塊中使用import { DateFmt } from '@/filters/DateFmt.js'導入我們的函數。代碼如下:

<script>import { DateFmt } from '@/filters/DateFmt.js';export default {data(){return{curDateImportFilter: DateFmt(new Date(), 'yyyy-MM-dd hh:mm:ss')}}}</script>

在我們<template>中新加一個元素,并綁定 curDateImportFilter屬性,運行 npm run serve 回到瀏覽器,你就會看到兩個格式化日期。這樣好嗎?我們多了一個import , 雖然實現了,但覺得不夠好。

3.2 使用Vue.filter 返回過濾器

如果我們仔細看官方文檔,就會發現官說明了,通過 Vue.filter("filter")返回定義的函數 ,所以Vue.filter不僅可以注冊,還可以返回。

我們繼續在data中添加屬性 :

curDateVueFilter: Vue.filter("DateFmt")(new Date(), 'yyyy-MM-dd hh:mm:ss')

通過上邊的步驟綁定該屬性,你會在瀏覽器上看到三個格式化好的日期。要使用Vue.filter,我們不得不額外的導入import Vue from 'vue'。跟上邊一樣,雖然實現了,但不夠好。

3.3 使用實例屬性$options

在vue組件,每個組件都有各自的屬性,這些屬性大多掛載中屬性 $options中,在chrome瀏覽器打印$vm0信息,我們就找到filter的信息。這里科普一下,在安裝vue開發者工具后$vm0表示我們當前選擇的組件,結果如下圖所示:

從圖形上看,當前組件的filters為一個對象,并不能直接找到,不過展開至__proto__原型上看到了我們的DateFmt方法。好了現在我們在繼續在data中添加屬性

curDateOptFilter: this.$options.filters.DateFmt(new Date(), 'yyyy-MM-dd hh:mm:ss')

是的,采用這個方式,就不用再引入vue或者函數了,跟直接在template使用一樣。簡潔方便,感覺好多了。在深入一點,通過調試我們就會發現 Vue.filter 是調用options.filters原型上的方法,如下圖所示

4. 總結

再簡單的功能,也有你想不到的用法。做開發,還是要會發散。本來這篇文章還想分享一下 vue 中scope css穿透功能。為了方便閱讀,就且聽下回分解吧。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97超级碰碰碰| 伊人久久五月天| 精品亚洲一区二区三区四区五区| 成人a视频在线观看| 日韩不卡中文字幕| www.xxxx欧美| 一色桃子一区二区| 粉嫩av一区二区三区免费野| 国产精品r级在线| 538国产精品一区二区免费视频| 一区二区成人精品| 日韩欧中文字幕| 欧美精品在线视频观看| 91久久精品国产91性色| 中文字幕亚洲激情| 日韩av成人在线| 日韩在线视频播放| 中文字幕日韩精品有码视频| 黄色一区二区三区| 性欧美xxxx交| 欧美体内谢she精2性欧美| 国产精品久久久久久搜索| 久久久国产精品视频| 日韩视频免费在线| 欧美黑人性生活视频| 亚洲va欧美va国产综合久久| 国产视频精品一区二区三区| 国产精品草莓在线免费观看| 久久久久久九九九| 国产精品爱啪在线线免费观看| 国产精品美女呻吟| 欧美激情aaaa| 日韩高清中文字幕| 亚洲精品综合久久中文字幕| 国产色婷婷国产综合在线理论片a| 日韩在线观看免费| 丝袜亚洲另类欧美重口| 久久久久久尹人网香蕉| 国产福利精品av综合导导航| 亚洲精品国产福利| 久久久久久久影视| 26uuu国产精品视频| 狠狠躁天天躁日日躁欧美| 久久精品中文字幕电影| 欧美日韩一区二区精品| 综合网日日天干夜夜久久| 亚洲欧美日韩国产成人| 色综合天天狠天天透天天伊人| 欧美黄色免费网站| 亚洲福利视频免费观看| 亚洲乱码av中文一区二区| 亚洲天堂精品在线| 欧美三级欧美成人高清www| 尤物99国产成人精品视频| 日韩电影中文字幕av| 日韩av在线电影网| 国产91精品黑色丝袜高跟鞋| 亚洲人成在线观看网站高清| 色婷婷久久一区二区| 91在线视频精品| 精品一区精品二区| 欧美在线视频播放| 69**夜色精品国产69乱| 精品国偷自产在线视频99| 欧美专区福利在线| 成人性生交大片免费观看嘿嘿视频| 亚洲精品久久久久久下一站| 欧美日韩亚洲高清| 亚洲综合社区网| 色噜噜国产精品视频一区二区| 国产精品免费一区二区三区都可以| 亚洲韩国青草视频| 成人免费直播live| 国产精品欧美亚洲777777| 亚洲网址你懂得| 亚洲男子天堂网| 欧美高清自拍一区| 日韩精品高清在线观看| 欧美在线影院在线视频| 久久精品福利视频| 欧美整片在线观看| 亚洲大胆人体在线| 欧美大人香蕉在线| 国产女人精品视频| 亚洲国产婷婷香蕉久久久久久| 欧美激情第6页| 97福利一区二区| 欧美大学生性色视频| 亚洲天堂av综合网| 欧美最近摘花xxxx摘花| 国产精品毛片a∨一区二区三区|国| 97国产精品视频人人做人人爱| 欧美性高潮在线| 午夜精品免费视频| 日韩一区av在线| 日韩成人中文字幕在线观看| 高清日韩电视剧大全免费播放在线观看| 国产精品老女人精品视频| 日韩中文字幕网| 久久午夜a级毛片| 亚洲三级 欧美三级| 国产精品久久久久av免费| 成人激情视频网| 欧美大成色www永久网站婷| 在线视频中文亚洲| 色在人av网站天堂精品| 日本不卡高字幕在线2019| 欧美特级www| 日韩欧美综合在线视频| 久久久久久久久久久成人| 国产一区二区黄| 97超视频免费观看| 青青草成人在线| 奇米4444一区二区三区| 亚洲第一区中文字幕| 国产精品久久网| 亚洲aaaaaa| 国产精品偷伦视频免费观看国产| 国产精品国产亚洲伊人久久| 日韩精品久久久久久久玫瑰园| 97久久超碰福利国产精品…| 亚洲精品乱码久久久久久按摩观| 欧美大片在线看| 色av吧综合网| 国产精品免费一区豆花| 亚洲精品久久7777777| 国产综合在线看| 欧美成人精品一区二区| 日韩精品在线视频美女| 成人免费淫片视频软件| 精品视频www| 欧美一级片一区| 欧美在线精品免播放器视频| 韩国三级日本三级少妇99| 国模精品一区二区三区色天香| 欧美成aaa人片免费看| 91久久在线视频| 国内精品国产三级国产在线专| 久久久久久亚洲精品中文字幕| 伊人久久男人天堂| 久久中文字幕在线| 亚洲深夜福利在线| 日本aⅴ大伊香蕉精品视频| 欧美亚洲国产视频小说| 亚洲欧美一区二区三区情侣bbw| 18性欧美xxxⅹ性满足| www.xxxx欧美| 久久免费少妇高潮久久精品99| 亚洲二区在线播放视频| 亚洲性猛交xxxxwww| 韩国精品久久久999| 国产mv免费观看入口亚洲| 欧美激情精品久久久久久久变态| 伊人精品在线观看| 亚洲一区二区免费在线| 亚洲免费伊人电影在线观看av| 欧美成人精品h版在线观看| 国产精国产精品| 中文字幕亚洲综合久久| 日日骚久久av| 亚洲丝袜在线视频| 午夜免费久久久久| 久久久久久久久久久91| 国产精品第3页|