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

如何使用vue過濾器filter

 更新時間:2021年05月12日 08:40:46   作者:sugar_coffee  
這篇文章主要介紹了如何使用vue過濾器filter,對vue感興趣的同學(xué),可以參考下

概述

在 vue2.0 之前,是有內(nèi)置過濾器的,在2.0中已經(jīng)沒有內(nèi)置的過濾器了,但我們可以自定義過濾器。

關(guān)于 vue 過濾器,在官方文檔中是這樣說明的:

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

即過濾器是用來格式化數(shù)據(jù)的一個函數(shù)。過濾器不會修改原始數(shù)據(jù),它的作用是過濾數(shù)據(jù),就是對數(shù)據(jù)進(jìn)行加工處理并返回處理后的數(shù)據(jù),比如做一些數(shù)據(jù)格式上的修改,狀態(tài)轉(zhuǎn)換等。

過濾器分為兩種

  • 組件內(nèi)的過濾器(組件內(nèi)有效)
  • 全局過濾器(所有組件共享)

定義過濾器

第一個參數(shù)是過濾器的名字

第二個參數(shù)是過濾器的功能函數(shù) (若不定義vue就不知道這個字符串是什么,有什么作用)。

過濾器的功能函數(shù)

  • 聲明 function(data,argv1,argv2...){}
  • 第一個參數(shù)是傳入的要過濾的數(shù)據(jù),即調(diào)用時管道符左邊的內(nèi)容。
  • 第二個參數(shù)開始往后就是調(diào)用過濾器的時候傳入的參數(shù)。

過濾器的使用

先注冊,后使用

組件內(nèi) filters:{ 過濾器名: fn } fn 內(nèi)通過 return 返回最終的數(shù)據(jù)

全局 Vue.filter('過濾器名',fn) fn 內(nèi)通過 return 返回最終的數(shù)據(jù)

使用 {{ 數(shù)據(jù) | 過濾器名 }}

// 使用過濾器時需要添加管道符號( | )作為分隔,管道符 | 右邊是過濾器名稱,即文本的功能函數(shù)
​
<!-- 在雙花括號中 -->
{{ message | 過濾器名稱 }}
​
<!-- 在 `v-bind` 中 -->
<div v-bind:id="id | 過濾器名稱"></div>

自定義全局過濾器

Vue.filter('過濾器名稱', function(val) { // val表示要被處理的數(shù)據(jù)
    // 過濾器業(yè)務(wù)邏輯,要有返回值
})
​
<div>{{ msg | 過濾器名稱 }}</div>
<div v-bind="msg | 過濾器名稱"></div>

局部過濾器

data () {
    return {
        msg: 'hello world'
    }
},
//定義私用局部過濾器。只能在當(dāng)前 vue 對象中使用
filters: {
    dataFormat: (msg, a) => { // msg表示要過濾的數(shù)據(jù),a表示傳入的參數(shù)
        return msg + a;
    }
}
​
<p>{{ msg | dataFormat('!')}}</p> // 結(jié)果: hello world!

注意事項(xiàng)

1.全局注冊時是 filter 沒有 s , 而組件過濾器是 filters,是有 s 的,雖然寫的時候沒有 s 也不報(bào)錯,但是過濾器是沒有效果的。

2.當(dāng)全局過濾器和局部過濾器名字重復(fù)的時候,會以就近原則進(jìn)行調(diào)用,即:局部過濾器優(yōu)先于全局過濾器被調(diào)用

3.一個表達(dá)式可以使用多個過濾器,其執(zhí)行順序從左往右,前一個過濾器的結(jié)果作為后一個過濾器的被處理數(shù)據(jù),所以要注意使用順序

熟悉 vue 的童鞋會知道,過濾器有時同methods、computed、watch一樣可以達(dá)到處理數(shù)據(jù)的目的,但又不能替代它們,因?yàn)樗荒芨淖冊贾?。如果一個過濾器的內(nèi)部特別復(fù)雜,可以考慮把它寫成一個計(jì)算屬性,因?yàn)橛?jì)算屬性本身帶有緩存,可復(fù)用性強(qiáng),而過濾器一般用來做一些簡單的操作。

在實(shí)際開發(fā)中,全局的過濾器要比局部過濾器使用的更廣泛一些,說白了我們?yōu)槭裁匆褂眠^濾器,其實(shí)就跟使用函數(shù)是一樣,把一些方法封裝,供其它組件使用,這樣調(diào)用起來更方便也更快捷。

大家知道全局過濾器是在 main.js 中定義的,但萬一項(xiàng)目過大,有多個過濾器,那 main.js 就一堆代碼,為了項(xiàng)目模塊化,最好是有專門的目錄來統(tǒng)一存放這些過濾器,然后把處理函數(shù)給抽離出去,放在一個.js文件中,下邊通過示例代碼展示。

示例一(局部過濾器)

格式化時間或日期,補(bǔ)全指定位數(shù),不足個位數(shù)補(bǔ)0

// filter/index.js文件
export default {
    dateFormat: value => {
        const dt = new Date(value * 1000)
    
        const y = dt.getFullYear()
        const m = (dt.getMonth() + 1 + '').padStart(2, '0') // .padStart(指定位數(shù),"要補(bǔ)全的符號或值")
        const d = (dt.getDay() + '').padStart(2, '0')
        
        const hh = (dt.getHours() + '').padStart(2, '0')
        const mm = (dt.getMinutes() + '').padStart(2, '0')
        const ss = (dt.getSeconds() + '').padStart(2, '0')
        
        return `${y}-${m}-$wppm3vysvbp ${hh}:${mm}:${ss}`
    }
}
​
// 在 .vue 文件中使用局部過濾器
<script>
    import filters from '../filter'
​
    export default {
        ... ... 
        filters: { ...filters },
        data() {
            return {}
        }
    }
</script>
​
<div> 日期:{{ date | dateFormat }} </div>

示例二(全局過濾器)

通用字典項(xiàng)的回顯:比如性別男女或通用選擇是否,后端傳給我們的數(shù)據(jù)是0、1,我們需要在頁面上顯示男女或是否

// constants/dictionary.js 文件
​
export const GENDER_MENU = [
    { code: 0, label: '男'},
    { code: 1, label: '女'}
];
​
export const COMMON_MENU = [
    { code: 0, label: '否'},
    { code: 1, label: '是'}
];
​
export default {
    GENDER_MENU, COMMON_MENU
}

filter / dict.js 文件

// filter/dict.js 文件
​
import Dict from '../constants/dictionary'
​
export const genderMenu = {
    func: value => {
        const target = Dict.GENDER_MENU.filter(item => {
            return item.code = value;
        })
        return target.length ? target[0].label : value;
    }
}
​
export const commonMenu = {
    func: value => {
        const target = Dict.COMMON_MENU.filter(item => {
            return item.code = value;
        })
        return target.length ? target[0].label : value;
    }
}

filter / index.js 文件

// filter/index.js 文件
​
import * as filters from './dict' // 導(dǎo)入過濾函數(shù)
​
const Install = Vue => {
    // 導(dǎo)入的 filters 是一個對象,使用Object.keys()方法,得到一個由key組成的數(shù)組,遍歷數(shù)據(jù),讓key作為全局過濾器的名字,后邊的是key對應(yīng)的處理函數(shù),這樣在任何一個組件中都可以使用全局過濾器了
    Object.keys(filters).forEach(key => {
        Vue.filter(key, filters[key].func)
    })
    /*
    for(const _filter in filters) {
        Vue.filter(`${_filter}`, filters[_filter].func)
    } */
}
​
export default Install

main.js 文件

// main.js 文件
​
... ...
import filters from  './../filter/index'
Vue.use(filters)
... ...

在.vue 文件中使用全局過濾器

// .vue 文件中使用全局過濾器
​
<p>性別:{{ gender | genderMenu }}</p>  

以上就是如何使用vue過濾器filter的詳細(xì)內(nèi)容,更多關(guān)于vue過濾器filter的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue項(xiàng)目實(shí)現(xiàn)添加圖片裁剪組件

    vue項(xiàng)目實(shí)現(xiàn)添加圖片裁剪組件

    這篇文章主要為大家詳細(xì)介紹了vue項(xiàng)目實(shí)現(xiàn)添加圖片裁剪組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Vue + Webpack + Vue-loader學(xué)習(xí)教程之功能介紹篇

    Vue + Webpack + Vue-loader學(xué)習(xí)教程之功能介紹篇

    這篇文章主要介紹了關(guān)于Vue + Webpack + Vue-loader功能介紹的相關(guān)資料,文中介紹的非常詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Vue3使用富文本框(wangeditor)的方法總結(jié)

    Vue3使用富文本框(wangeditor)的方法總結(jié)

    項(xiàng)目中用到了富文本,選來選去選擇了wangeditor,下面這篇文章主要給大家介紹了關(guān)于Vue3使用富文本框(wangeditor)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • vue數(shù)據(jù)對象length屬性未定義問題

    vue數(shù)據(jù)對象length屬性未定義問題

    這篇文章主要介紹了vue數(shù)據(jù)對象length屬性未定義問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue使用recorder-core.js實(shí)現(xiàn)錄音功能

    vue使用recorder-core.js實(shí)現(xiàn)錄音功能

    這篇文章主要介紹了vue如何使用recorder-core.js實(shí)現(xiàn)錄音功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • 詳解Vue2.5+遷移至Typescript指南

    詳解Vue2.5+遷移至Typescript指南

    這篇文章主要介紹了詳解Vue2.5+遷移至Typescript指南,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • vue項(xiàng)目首屏打開速度慢的解決方法

    vue項(xiàng)目首屏打開速度慢的解決方法

    這篇文章主要介紹了vue項(xiàng)目首屏打開速度慢的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Vue基于vuex、axios攔截器實(shí)現(xiàn)loading效果及axios的安裝配置

    Vue基于vuex、axios攔截器實(shí)現(xiàn)loading效果及axios的安裝配置

    這篇文章主要介紹了Vue基于vuex、axios攔截器實(shí)現(xiàn)loading效果及axios的安裝配置,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • uniapp?vue3中使用webview在微信小程序?qū)崿F(xiàn)雙向通訊功能

    uniapp?vue3中使用webview在微信小程序?qū)崿F(xiàn)雙向通訊功能

    微信小程序的存在許多功能上的限制和約束,有些情況不得不去使用webview進(jìn)行開發(fā)實(shí)現(xiàn)需求,這篇文章主要給大家介紹了關(guān)于uniapp?vue3中使用webview在微信小程序?qū)崿F(xiàn)雙向通訊功能的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • vue-scroller記錄滾動位置的示例代碼

    vue-scroller記錄滾動位置的示例代碼

    本篇文章主要介紹了vue-scroller記錄滾動位置的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論

郑州市| 汕尾市| 和田县| 鄂托克前旗| 宜兰县| 洞头县| 满城县| 年辖:市辖区| 汾阳市| 曲阳县| 剑阁县| 玉树县| 郴州市| 仙居县| 合水县| 湖口县| 蒙城县| 南陵县| 丰顺县| 玛沁县| 色达县| 时尚| 敦化市| 德昌县| 巴楚县| 临沭县| 桃江县| 嘉鱼县| 醴陵市| 崇仁县| 漳平市| 三门县| 易门县| 靖边县| 商丘市| 灵石县| 中西区| 长宁县| 巴东县| 麦盖提县| 腾冲县|