欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue 內(nèi)置過濾器的使用總結(jié)(附加自定義過濾器)

 更新時(shí)間:2018年12月11日 11:56:54   作者:Javan  
這篇文章主要介紹了vue 內(nèi)置過濾器的使用總結(jié)(附加自定義過濾器),詳細(xì)的介紹了各種過濾器的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧

前言

vue中過濾器filters的作用是什么?

過濾器是一個(gè)通過輸入數(shù)據(jù),能夠及時(shí)對(duì)數(shù)據(jù)進(jìn)行處理并返回一個(gè)數(shù)據(jù)結(jié)果的簡(jiǎn)單函數(shù)。Vue有很多很便利的過濾器,可以參考官方文檔。

能夠幫我們處理快速一些數(shù)據(jù)的格式----format數(shù)據(jù)格式化處理。

語(yǔ)法也很簡(jiǎn)單

{{ message | Filter }}
  • message: 要格式化的數(shù)據(jù)
  • Filter: 對(duì)數(shù)據(jù)格式化的方法

鏈?zhǔn)竭^濾

VueJs允許你鏈?zhǔn)秸{(diào)用過濾器,簡(jiǎn)單的來(lái)說(shuō),就是一個(gè)過濾器的輸出成為下一個(gè)過濾器的輸入,然后再次過濾。接下來(lái),我們可以想象一個(gè)比較簡(jiǎn)答的例子,使用了Vue的 filterBy + orderBy 過濾器來(lái)過濾所有商品products。過濾出來(lái)的產(chǎn)品是屬于電器類商品,并且按電器字母排序。

filterBy過濾器 : 過濾器的值必須是一個(gè)數(shù)組,filterBy + 過濾條件。過濾條件是:‘string || function' + in ‘optionKeyName'

orderBy過濾器 : 過濾器的值必須是一個(gè)數(shù)組,orderBy + 過濾條件。過濾條件是:‘string || array ||function' + ‘order ≥ 0 為升序 || order < 0 為降序'

接下來(lái),我們可以看下第二個(gè)例子:我們有一個(gè)商品數(shù)組products,我們希望遍歷這個(gè)數(shù)組,并把他們打印成一張清單,這個(gè)用v-for很容易實(shí)現(xiàn)。

<li v-for="product in products">
 {{ product.name | capitalize }} - {{ product.price | currency }}
</li>

capitalize過濾器 : 將輸入的字符串首字母轉(zhuǎn)換成大寫字母的過濾器。currency過濾器 : 將輸入的數(shù)字轉(zhuǎn)換成現(xiàn)金的過濾器??梢愿县泿欧?hào)(默認(rèn)$)和保留的小數(shù)位(默認(rèn)2)。

利用上面的兩個(gè)過濾器,能夠很好的把一個(gè)json數(shù)組的商品清單格式化成通熟易懂的商品價(jià)格清單。

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

<li v-for="product in products | filterBy 'electronics' in 'category' ">
 {{ product.name | capitalize }} - {{ product.price | currency }}
</li>

上面的例子,就是用filterBy 過濾在 'category'中含有'electronics' 關(guān)鍵字的列表,返回的列表就是只含有 'electronics' 關(guān)鍵字的列表。

如果想要多個(gè)搜索條件:

<li v-for="product in products | filterBy 'electronics' in 'category' 'name' ">
 {{ product.name | capitalize }} - {{ product.price | currency }}
</li>

上面的例子,就是用filterBy 過濾在 'category' 和 'name' 中含有'electronics' 關(guān)鍵字的列表。

最后我們還需要將這個(gè)列表用字母進(jìn)行排序。我們可以在 filterBy 過濾器的基礎(chǔ)上,鏈?zhǔn)秸{(diào)用orderBy 過濾器。

<ul>
 <li v-for="product in products
   | filterBy 'electronics' in 'category'
   | orderBy 'name' "
 >
  {{ product.name | capitalize }} - {{ product.price | currency }}
 </li>
</ul>

orderBy 的排序方式默認(rèn)是升序,如果想要降序,只需要加一個(gè)小于0的參數(shù):

<li v-for="product in products
  | filterBy 'electronics' in 'category'
  | orderBy 'name' -1 "
>

下面看看vue自帶過濾器有哪些,并附帶小示例。最后記得看看如果自定義過濾器哦!

vue自帶的過濾器

capitalize(首字母大寫)

<div class="test">
 {{message | capitalize}}
</div>

<script type="text/javascript">
var myVue = new Vue({
 el: ".test",
 data: {
 message: "javan"
 }
})
</script>

上面代碼輸出:Javan

uppercase(全部大寫)

// 初始message:abc

{{message | uppercase}}

// 上面代碼輸出:ABC

lowercase(全部小寫)

// 初始message:ABC

{{message | lowercase}}

// 上面代碼輸出:abc

currency(輸出金錢以及小數(shù)點(diǎn))

<div class="test">
 {{message | currency}} // 輸出$520.13
 {{message | currency '¥' "2"}} //輸出 $520.13
</div>
<script type="text/javascript">
 var myVue = new Vue({
 el: ".test",
 data: {
  message: "520.1314"
 }
 })
</script>

第一個(gè)參數(shù) {String} [貨幣符號(hào)] - 默認(rèn)值: '$'
第二個(gè)參數(shù) {Number} [小數(shù)位] - 默認(rèn)值: 2

pluralize(變復(fù)數(shù))

如果只有一個(gè)參數(shù),復(fù)數(shù)形式只是簡(jiǎn)單地在末尾添加一個(gè) “s”。如果有多個(gè)參數(shù),參數(shù)被當(dāng)作一個(gè)字符串?dāng)?shù)組,對(duì)應(yīng)一個(gè)、兩個(gè)、三個(gè)…復(fù)數(shù)詞。如果值的個(gè)數(shù)多于參數(shù)的個(gè)數(shù),多出的使用最后一個(gè)參數(shù)。

<div class="test">
 {{message}} {{message | pluralize 'item'}} 輸出: 1 item
 <ul v-for="item in lili">
 <li>
  {{item}} {{item | pluralize 'item'}}
  輸出: 1 item 2 items 3 items
 </li>
 </ul>

 <ul v-for="item in lili">
 <li>
  {{item}} {{item | pluralize 'st' 'rd'}}
  輸出: 1 st 2 rd 3 rd
 </li>
 </ul>

 <ul v-for="item in man">
 <li>
  {{item}} {{item | pluralize 'item'}}
  輸出: 1 item 2 items 3 items
 </li>
 </ul>

 <ul v-for="item in man">
 <li>
  {{item}} {{item | pluralize 'st' 'rd'}}
  輸出: 1 st 2 rd 3 rd
 </li>
 </ul>
</div>
<script type="text/javascript">
 var myVue = new Vue({
 el: ".test",
 data: {
  message: 1,
  lili: [1,2,3],
  man: {
  name1: 1,
  name2: 2,
  name3: 3
  }
 }
 })
</script>

debounce(事件延時(shí))

1) 限制: 需在@里面使用
2) 參數(shù):{Number} [wait] - 默認(rèn)值: 300
3) 功能:包裝處理器,讓它延遲執(zhí)行 x ms, 默認(rèn)延遲 300ms。包裝后的處理器在調(diào)用之后至少將延遲 x ms, 如果在延遲結(jié)束前再次調(diào)用,延遲時(shí)長(zhǎng)重置為 x ms。

<div class="test">
 <button id="btn" @click="doSomeThing | debounce 10000">點(diǎn)擊我</button>
</div>
<script type="text/javascript">
 var myVue = new Vue({
 el: ".test",
 methods: {
  doSomeThing: function () {
  // do something
  }
 }
 })
</script>

limitBy(排序)

1) 限制:需在v-for(即數(shù)組)里面使用

第一個(gè)參數(shù):{Number} 取得數(shù)量

第二個(gè)參數(shù):{Number} 偏移量

<div class="test">
 <ul v-for="item in lili | limitBy 10">
 <li>{{item}}</li>
 輸出1 2 3 4 5 6 7 8 9 10
 </ul>
 <ul v-for="item in lili | limitBy 10 3">
 <li>{{item}}</li>
 輸出 4 5 6 7 8 9 10 11 12 13
 </ul>
</div>
<script type="text/javascript">
 var myVue = new Vue({
 el: ".test",
 data: {
  lili: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
 }
 })
</script>

filterBy(過濾)

1) 限制:需在v-for(即數(shù)組)里面使用

第一個(gè)參數(shù): {String | Function} 需要搜索的字符串

第二個(gè)參數(shù): in (可選,指定搜尋位置)

第三個(gè)參數(shù): {String} (可選,數(shù)組格式)

<div class="test">
 <ul v-for="item in lili | filterBy 'o' ">
 <li>{{item}}</li>
 輸出oi oa lo ouo oala
 </ul>
 <ul v-for="item in man | filterBy 'l' in 'name' ">
 <li>{{item.name}}</li>
 輸出lily lucy
 </ul>
 <ul v-for="item in man | filterBy 'l' in 'name' 'dada' ">
 <li>{{item.name+"+"+item.dada}}</li>
 輸出lily+undefined lucy+undefined undefined+lsh
 </ul>
</div>
<script type="text/javascript">
var myVue = new Vue({
 el: ".test",
 data: {
 lili: ["oi", "oa", "ll", "lo" ,"ouo" ,"kk" ,"oala"],
 man: [ //此處注意man是數(shù)組,不是對(duì)象
 {name: "lily"},
 {name: "lucy"},
 {name: "oo"},
 {dada: "lsh"},
 {dada: "ofg"}
 ]
 }
})
</script>

orderBy(排序)

1) 限制:需在v-for(即數(shù)組)里面使用

第一個(gè)參數(shù): {String | Array | Function} 需要搜索的字符串

第二個(gè)參數(shù): {String} 可選參數(shù) order 決定結(jié)果升序(order >= 0)或降序(order < 0),默認(rèn)是升序

<div class="test">
 遍歷數(shù)組
 <ul v-for="item in lili | orderBy 'o' 1">
 <li>{{item}}</li>
 輸出kk ll oi
 </ul>
 <ul v-for="item in lili | orderBy 'o' -1">
 <li>{{item}}</li>
 輸出oi ll kk
 </ul>
 遍歷含對(duì)象的數(shù)組
 <ul v-for="item in man | orderBy 'name' 1">
 <li>{{item.name}}</li>
 輸出Bruce Chuck Jackie
 </ul>
 <ul v-for="item in man | orderBy 'name' -1">
 <li>{{item.name}}</li>
 輸出Jackie Chuck Bruce
 </ul>
 使用函數(shù)排序
 <ul v-for="item in man | orderBy ageByTen">
 <li>{{item.name}}</li>
 輸出Bruce Chuck Jackie
 </ul>
</div>
<script type="text/javascript">
 var myVue = new Vue({
 el: ".test",
 data: {
  lili: ["oi", "kk", "ll"],
  man: [ //此處注意man是數(shù)組,不是對(duì)象
  {
  name: 'Jackie',
  age: 62
  },
  {
  name: 'Chuck',
  age: 76
  },
  {
  name: 'Bruce',
  age: 61
  }
 ]
 },
 methods: {
  ageByTen: function () {
  return 1;
  }
 }
 })
</script>

自定義過濾器

<div class="test">
 {{'2018-11-16 18:12:15'|formatDate}}
</div>
<script type="text/javascript">
 var myVue = new Vue({
 el: ".test",
 methods: {
 },
 filters:{
  formatDate (val) {
  return moment(val).format('YYYY-MM-DD');
  // 這里用到了moment.js
  }
 }
 })
</script>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解vue-cli3多頁(yè)應(yīng)用改造

    詳解vue-cli3多頁(yè)應(yīng)用改造

    這篇文章主要介紹了詳解vue-cli3多頁(yè)應(yīng)用改造,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-06-06
  • 解決vue scoped html樣式無(wú)效的問題

    解決vue scoped html樣式無(wú)效的問題

    這篇文章主要介紹了解決vue scoped html樣式無(wú)效的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-10-10
  • 部署vue+Springboot前后端分離項(xiàng)目的步驟實(shí)現(xiàn)

    部署vue+Springboot前后端分離項(xiàng)目的步驟實(shí)現(xiàn)

    這篇文章主要介紹了部署vue+Springboot前后端分離項(xiàng)目的步驟實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • vue中表格設(shè)置某列樣式、不顯示表頭問題

    vue中表格設(shè)置某列樣式、不顯示表頭問題

    這篇文章主要介紹了vue中表格設(shè)置某列樣式、不顯示表頭問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue3如何在SCSS中使用v-bind

    Vue3如何在SCSS中使用v-bind

    這篇文章主要介紹了Vue3如何在SCSS中使用v-bind,通過template先創(chuàng)建一個(gè)通用的頁(yè)面結(jié)構(gòu),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • vue 指定組件緩存實(shí)例詳解

    vue 指定組件緩存實(shí)例詳解

    keep-alive 是 Vue 內(nèi)置的一個(gè)組件,可以使被包含的組件保留狀態(tài),或避免重新渲染。這篇文章主要介紹了vue 指定組件緩存,需要的朋友可以參考下
    2018-04-04
  • Vue前端項(xiàng)目部署的三種方案詳解

    Vue前端項(xiàng)目部署的三種方案詳解

    這篇文章主要介紹了Vue前端項(xiàng)目部署的三種方案,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • 如何使用HBuilderX把vue項(xiàng)目打包成apk

    如何使用HBuilderX把vue項(xiàng)目打包成apk

    這篇文章主要介紹了如何使用HBuilderX把vue項(xiàng)目打包成apk,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Vue 解決父組件跳轉(zhuǎn)子路由后當(dāng)前導(dǎo)航active樣式消失問題

    Vue 解決父組件跳轉(zhuǎn)子路由后當(dāng)前導(dǎo)航active樣式消失問題

    這篇文章主要介紹了Vue 解決父組件跳轉(zhuǎn)子路由后當(dāng)前導(dǎo)航active樣式消失問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-07-07
  • 如何使用yarn創(chuàng)建vite項(xiàng)目+vue3

    如何使用yarn創(chuàng)建vite項(xiàng)目+vue3

    這篇文章主要介紹了如何使用yarn創(chuàng)建vite項(xiàng)目+vue3,詳細(xì)介紹了使用vite創(chuàng)建vue3過程,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03

最新評(píng)論