<
!-- 在雙花括號中 --
>
}<
!-- 在 `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 例項之...