最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年09月11日 14:31:22   作者:_herbert  
這篇文章主要給大家介紹了如何換個角度使用VUE過濾器的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用VUE具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

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

1. 定義一個日期格式化函數(shù)

都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

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

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

3. 在JS中使用 DateFmt

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

3.1 在組件頁面導入函數(shù)

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

<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 , 雖然實現(xiàn)了,但覺得不夠好。

3.2 使用Vue.filter 返回過濾器

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

我們繼續(xù)在data中添加屬性 :

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

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

3.3 使用實例屬性$options

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

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

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

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

4. 總結

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

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

相關文章

  • Vue同一路由強制刷新頁面的實現(xiàn)過程

    Vue同一路由強制刷新頁面的實現(xiàn)過程

    這篇文章主要介紹了解決VUE同一路由強制刷新頁面的問題,本文給大家分享實現(xiàn)過程,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • vuex 使用文檔小結篇

    vuex 使用文檔小結篇

    Vuex 是一個專為Vue.js應用程序開發(fā)的狀態(tài)管理模式,集中式存儲管理應用的所有組件狀態(tài)。本文給大家介紹了vuex使用文檔,需要的朋友參考下吧
    2018-01-01
  • solid.js響應式createSignal 源碼解析

    solid.js響應式createSignal 源碼解析

    這篇文章主要為大家介紹了solid.js響應式createSignal 源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • element-ui復雜table表格動態(tài)新增列、動態(tài)調整行以及列順序詳解

    element-ui復雜table表格動態(tài)新增列、動態(tài)調整行以及列順序詳解

    這篇文章主要給大家介紹了關于element-ui復雜table表格動態(tài)新增列、動態(tài)調整行以及列順序的相關資料,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • Vue引入vuetify框架你需要知道的幾點知識

    Vue引入vuetify框架你需要知道的幾點知識

    這篇文章主要介紹了Vue引入vuetify框架你需要知道的幾點知識,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vue3之父子組件異步props數(shù)據(jù)的傳值方式

    Vue3之父子組件異步props數(shù)據(jù)的傳值方式

    這篇文章主要介紹了Vue3之父子組件異步props數(shù)據(jù)的傳值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • vue自定義全局組件實現(xiàn)彈框案例

    vue自定義全局組件實現(xiàn)彈框案例

    這篇文章主要為大家詳細介紹了vue自定義全局組件實現(xiàn)彈框案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Vue項目打包成exe可執(zhí)行文件的實現(xiàn)過程(無瑕疵,完美版)

    Vue項目打包成exe可執(zhí)行文件的實現(xiàn)過程(無瑕疵,完美版)

    突然接到公司需求,說客戶想讓我們把項目直接打包,所以下面這篇文章主要給大家介紹了關于Vue項目打包成exe可執(zhí)行文件的實現(xiàn)過程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • vue中created和mounted的區(qū)別淺析

    vue中created和mounted的區(qū)別淺析

    這篇文章主要給大家介紹了關于vue中created和mounted區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用vue具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • 使用ElementUI寫一個前端分頁查詢的實例

    使用ElementUI寫一個前端分頁查詢的實例

    本文主要介紹了使用ElementUI寫一個前端分頁查詢的實例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論

金乡县| 临安市| 东安县| 德钦县| 韩城市| 阳城县| 宣城市| 扶绥县| 贵南县| 荣成市| 上思县| 苍南县| 黎川县| 五华县| 蓬莱市| 南昌市| 公安县| 平原县| 嘉定区| 洞头县| 三原县| 海城市| 申扎县| 蓝山县| 化州市| 崇义县| 赫章县| 新昌县| 石楼县| 绩溪县| 合作市| 深水埗区| 富川| 中江县| 马公市| 晴隆县| 牡丹江市| 彰化市| 宽城| 华安县| 土默特左旗|