紀念即將逝去的Vue過濾器

2021-09-19 09:16:06 字數 2884 閱讀 1429

在這個教程中,我們將會通過幾個例子,了解和學習vuejs的過濾器。我們參考了一些比較完善的過濾器,比如orderby 和 filterby。而且我們可以鏈式呼叫過濾器,乙個接乙個過濾。因此,我們可以定義我們自己的過濾器在我們的vue例項中。

閱讀這個教程的前提是你對vue已經有了基本的語法基礎。

過濾器是乙個通過輸入資料,能夠及時對資料進行處理並返回乙個資料結果的簡單函式。vue有很多很便利的過濾器,可以參考官方文件,過濾器,過濾器通常會使用管道標誌 「 | 」, 比如:

}

// 'abc' => 'abc'

在上述的例子中,在插值的時候,使用了vue的乙個uppercase過濾器,msg可以是直接寫死,寫成},也可以利用使用者輸入來改變msg的值。

uppercase過濾器 : 將輸入的字串轉換成大寫字母的過濾器。

vuejs允許你鏈式呼叫過濾器,簡單的來說,就是乙個過濾器的輸出成為下乙個過濾器的輸入,然後再次過濾。接下來,我們可以想象乙個比較簡答的例子,使用了vue的 filterby + orderby 過濾器來過濾所有商品products。過濾出來的產品是屬於電器類商品,並且按電器字母排序。

filterby過濾器 : 過濾器的值必須是乙個陣列,filterby + 過濾條件。

過濾條件是:『string || function』 + in 『optionkeyname』

orderby過濾器 : 過濾器的值必須是乙個陣列,orderby + 過濾條件。

過濾條件是:『string || array ||function』 + 『order ≥ 0 為公升序 || order < 0 為降序』

接下來,我們可以看下第二個例子:

我們有乙個商品陣列products,我們希望遍歷這個陣列,並把他們列印成一張清單,這個用v-for很容易實現。

} - }

capitalize過濾器 : 將輸入的字串首字母轉換成大寫字母的過濾器。

currency過濾器 : 將輸入的數字轉換成現金的過濾器。可以跟上貨幣符號(預設$)和保留的小數字(預設2)。

利用上面的兩個過濾器,能夠很好的把乙個json陣列的商品清單格式化成通熟易懂的商品**清單。

如果只想要電器類商品,可以在v-for上加過濾條件:

} - }

上面的例子,就是用filterby 過濾在 'category'中含有'electronics' 關鍵字的列表,返回的列表就是只含有 'electronics' 關鍵字的列表。

如果想要多個搜尋條件:

} - }

上面的例子,就是用filterby 過濾在 'category' 和 'name' 中含有'electronics' 關鍵字的列表。

最後我們還需要將這個列表用字母進行排序。我們可以在 filterby 過濾器的基礎上,鏈式呼叫orderby 過濾器。

orderby 的排序方式預設是公升序,如果想要降序,只需要加乙個小於0的引數:

雖然vuejs給我們提供了很多強有力的過濾器,但有時候還是不夠。值得慶幸的,vue給我們提供了乙個乾淨簡潔的方式來定義我們自己的過濾器,之後我們就可以利用管道 「 | 」 來完成過濾。

定義乙個全域性的自定義過濾器,需要使用vue.filter()構造器。這個構造器需要兩個引數。

vue.filter() constructor parameters:

1.filterid: 過濾器id,用來做為你的過濾器的唯一標識;

2.filter function: 過濾器函式,用乙個function來接收乙個引數,之後再將接收到的引數格式化為想要的資料結果。

回到之前的例子:

現在設想我們有乙個網上**,並給我們的所有商品打五折。

為了完成這個例子,我們需要完成的是

vue.filter( 'discount' , function(value) );

new vue(,,,

,,,]

}});

現在就可以像使用vue自帶的過濾器一樣使用自定義過濾器了

上面的html**將會輸出打了五折之後的所有商品的清單列表。

那如果我們想要的是任意折扣呢?我們應該在discount過濾器裡增加乙個折扣數值引數,改造一下我們的過濾器。

vue.filter( 'discount' , function(value,discount) );
然後重新呼叫我們的過濾器

我們也可以在我們vue例項裡構造我們的過濾器,這樣構造的好處是,這樣就不會影響到其他不需要用到這個過濾器的vue例項。

new vue(,,,

,,,]

},filters:

}});

定義在全域性就能在所有的例項中呼叫過濾器,如果定義在了例項裡就在例項裡呼叫過濾器。

多虧了簡潔的管道過濾器構造器,我們不僅可以呼叫它原生的過濾器,也可以自定義屬於我們自己的過濾器。最近vue2.0引起來前端一波熱烈的討論。從尤大的github上看到了2.0和1.0的區別

vue2.0想要把filter去掉。不過我想,如果是用1.0的朋友還是很需要用到過濾器的 : )

Vue 過濾器案例(全域性過濾器和區域性過濾器)

doctype html en utf 8 viewport content width device width,initial scale 1.0 js vue 2.4.0 js script 過濾器 title head 兩個過濾器的名稱都為msgformat,但是控制不同作用,乙個是全域性的...

vue學習 過濾器

作用 過濾資料,一般是把伺服器返回的資料,過濾成符合頁面展示的資料 1.私有過濾器 vue.component login data function filters 2.共有過濾器 最好把vue.filter放在元件註冊之前 vue.filter toup function input,name ...

vue中過濾器

常用語文字的格式化,過濾器可用在兩個地方 雙括號插值和v bind 表帶式 用符號 表示,在雙括號的中 在 v bind 中 具體使用請參考vue官方文件 如果專案中使用的過濾器比較多,不妨單獨用乙個filter.js檔案用來專門寫過濾器,在main.js中新增如下 就可以將filter中過濾器全部...