Vue filter過濾器的實現方式

2021-10-25 04:07:06 字數 1941 閱讀 4827

<

!-- 在雙花括號中 --

>

}<

!-- 在 `v-bind`

中 --

>

"rawid | formatid"

>

<

/div>

filters:

}

在**執行後,message將作為第乙個引數傳入filters中對應的函式中,將處理後的資料return一下就行了。

function

parsefilters

(exp)

}else

if(indouble)

}else

if(intemplatestring)

}else

if(inregex)

}elseif(

c ===

0x7c

&&// pipe

exp.

charcodeat

(i +1)

!==0x7c

&& exp.

charcodeat

(i -1)

!==0x7c

&&!curly &&

!square &&

!paren

)else

}else}if

(c ===

0x2f)}

if(!p ||

!validdivisioncharre.

test

(p))}}

}if(expression === undefined)

else

if(lastfilterindex !==0)

function

pushfilter()

if(filters)

}return expression

}function

wrapfilter

(exp, filter)

else

}

這兩段**看似很複雜,其實一點都不難理解,這兩個函式實現了乙個最簡單的功能將message|capitalize轉換成_f("capitalize")(message)這種形式。對於使用多個通道符號的字串,也可以將上乙個結果作為引數傳給下乙個_f(*)(_fn(*)(arg)),舉個例子:parsefilters('arg1|fn1|fn2|fn3')對於這樣乙個過濾語句,parsefilters會處理成這樣的乙個字串"_f("fn3")(_f("fn2")(_f("fn1")(arg1)))",這樣就做了多個過濾器也就可以使用了。這段字串有什麼作用呢?_f()函式是幹嘛用的呢?

function

installrenderhelpers

(target)

function

resolvefilter

(id)

在vue中定義了這麼個往物件中新增輔助方法的功能。這裡的parsefilter返回的值中的_f()就是這個resolvefilter這個函式將掛載在vue.filter上的過濾器函式[id]返回了,然後將引數傳給該方法,結果傳給下乙個filter,這樣就完成了這個過濾的功能,最終將結果渲染在頁面上。

當然這裡僅僅討論了filter在}的實現方式,還有在bind中的實現,本文,僅僅簡單討論了這部分功能,和這種程式設計的思路,這樣方便以後我們在實際業務中遇到類似的情況,我們有這種思路可以去解決問題。

vue filter過濾器的用法

前言 過濾器filter經常被用在文字的格式化。比如時間戳的轉化,符號的新增 分為區域性過濾器和全域性過濾器。種類一 區域性過濾器 寫在元件內部,供該元件使用 1.定義單個過濾器afterprice,給 新增符號 data filters 呼叫過濾器時可以不用傳入資料,預設第乙個引數即為該資料。即 ...

vue filter物件 vue 過濾器

在vue1.0的時候其實是內建了過濾器的,但是考慮到好多過濾器並不一定會被開發所呼叫,所以把原本內建的過濾器就給去掉了,但是過濾器還是比較普遍的,所以我們從vue2.0之後就需要自己定義過濾器過濾器分為兩種,一種是區域性過濾器,一種全域性過濾器。所有的過濾器都是函式,並且引數為要過濾的資料。區域性過...

vue filter過濾器用法

vue.js 允許你自定義過濾器,可被用於一些常見的文字格式化。過濾器可以用在兩個地方 雙花括號插值和v bind表示式 後者從 2.1.0 開始支援 div v bind id rawid formatid div 1 在乙個元件的選項中定義本地的過濾器 filters 2 在建立 vue 例項之...