第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

1. 前言

本小節(jié)我們將學(xué)習(xí)如何使用過濾器。包括如何注冊過濾器、過濾器的使用、過濾器的串聯(lián)、過濾器的傳參。過濾器的使用非常簡單,同學(xué)們只需要多寫幾個例子就可以完全掌握。

2. 慕課解釋

Vue.js 允許你自定義過濾器,可被用于一些常見的文本格式化。 — 官方定義

過濾器是對即將顯示的數(shù)據(jù)做進(jìn)一步的篩選處理,然后進(jìn)行顯示,值得注意的是過濾器并沒有改變原來的數(shù)據(jù),只是在原數(shù)據(jù)的基礎(chǔ)上產(chǎn)生新的數(shù)據(jù)。過濾器在日常開發(fā)中也會大量使用,例如:枚舉值的轉(zhuǎn)換、首字母大寫等等。

3. 定義過濾器

Vue 過濾器有全局注冊和局部注冊兩種方式。全局注冊的過濾器可以在項(xiàng)目中的所有組件中使用,局部注冊的過濾器只能在當(dāng)前組件內(nèi)部使用。
過濾器可以用在兩個地方:雙花括號插值和 v-bind 表達(dá)式。過濾器應(yīng)該被添加在 JavaScript 表達(dá)式的尾部,由 “管道” 符號表示:

<!-- 在雙花括號中 -->
{{ message | filteName }}

<!-- 在 `v-bind` 中 -->
<div v-bind:id="message | filteName"></div>

接下來我們介紹全局過濾器和局部過濾器的注冊方式。

3.1. 定義全局過濾器

通過 Vue.filter (name, function (){} ) 方式注冊全局過濾器,第一個參數(shù) name 為自定義過濾器名稱;第二個參數(shù)是過濾函數(shù),返回處理后的值。

一個首字母大寫的過濾器:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <div>
      <label>英文名:</label>
      <input type="text" v-model="name"/>
    </div>
    <div>{{ name | capitalize}}</div>
  </div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script type="text/javascript">
  Vue.filter('capitalize', function(value) {
    if (!value) return ''
    value = value.toString()
    return value.charAt(0).toUpperCase() + value.slice(1)
  })
  var vm = new Vue({
    el: '#app',
    data() {
    	return {
        name: ''
      }
    }
  })
</script>
</html>

運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線運(yùn)行效果

代碼解釋:
JS 代碼第 3-7 行,我們定義了過濾器 capitalize,用來給字符串的首字母大寫。
HTML 代碼第 6 行,我們通過插值的方式使用過濾器 capitalize。

3.2 定義局部過濾器

在 Vue 實(shí)例 options 中使用 filters 選項(xiàng)來注冊局部過濾器,這樣過濾器只能在這個實(shí)例中使用:

filters: {
  '過濾器名字': function(value) {
    // 具體過濾邏輯
  }
}

具體示例:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <div>
      <label>英文名:</label>
      <input type="text" v-model="name"/>
    </div>
    <div>{{ name | capitalize}}</div>
  </div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script type="text/javascript">
  var vm = new Vue({
    el: '#app',
    data() {
    	return {
        name: ''
      }
    },
    filters: {
      capitalize: function(value) {
        if (!value) return ''
        value = value.toString()
        return value.charAt(0).toUpperCase() + value.slice(1)
      }
    }
  })
</script>
</html>

運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線運(yùn)行效果

代碼解釋:
JS 代碼第 10-16 行,我們定義了局部過濾器 capitalize,用來給字符串的首字母大寫。
HTML 代碼第 6 行,我們通過插值的方式使用過濾器 capitalize。

4. 過濾器串聯(lián)

{{ message | filterA | filterB }}

filterA 被定義為接收單個參數(shù)的過濾器函數(shù),表達(dá)式 message 的值將作為參數(shù)傳入到函數(shù)中。然后繼續(xù)調(diào)用同樣被定義為接收單個參數(shù)的過濾器函數(shù) filterB,將 filterA 的結(jié)果傳遞到 filterB 中。
示例:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <div>
      <label>英文名:</label>
      <input type="text" v-model="name"/>
    </div>
    <div>{{ name | trim | capitalize}}</div>
  </div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script type="text/javascript">
  Vue.filter('capitalize', function(value) {
    if (!value) return ''
    value = value.toString()
    return value.charAt(0).toUpperCase() + value.slice(1)
  })
  Vue.filter('trim', function(value) {
    return value.replace(/^\s+|\s+$/g,"")
  })
  var vm = new Vue({
    el: '#app',
    data() {
    	return {
        name: ''
      }
    }
  })
</script>
</html>

運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線運(yùn)行效果

代碼解釋:
JS 代碼第 3-7 行,我們定義了全局過濾器 capitalize,用來給字符串的首字母大寫。
JS 代碼第 8-10 行,我們定義了全局過濾器 trim,用來處理字符串中的空格。
HTML 代碼第 6 行,我們通過串聯(lián)的方式使用兩個過濾器。

5. 接收多個參數(shù)的過濾器

過濾器是 JavaScript 函數(shù),因此可以接收參數(shù):

<!-- 在雙花括號中 -->
{{ message | filteName(params1,params2) }}

<!-- 在 `v-bind` 中 -->
<div v-bind:id="message | filteName(params1,params2)"></div>
實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <div>
      <label>個數(shù):</label>
      <input type="number" v-model="count"/>
      <label>單位: 1000 </label>
    </div>
    <div>單價(jià): {{price}} / 個</div>
    <div>總價(jià): {{ count | sum(price, unit)}}</div>
  </div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script type="text/javascript">
  Vue.filter('sum', function(value, price, unit) {
    return value * price * unit
  })
  var vm = new Vue({
    el: '#app',
    data() {
    	return {
        count: 0,
        unit: 1000,
        price: 20
      }
    }
  })
</script>
</html>

運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線運(yùn)行效果

代碼解釋:
JS 代碼第 3-5 行,我們定義了全局過濾器 sum,用來計(jì)算購買數(shù)量的總價(jià)。
HTML 代碼第 8 行,使用過濾器 sum,并傳入?yún)?shù) price 和 unit。

6. 小結(jié)

本節(jié),我們帶大家學(xué)習(xí)了自定義過濾器的使用方式。主要知識點(diǎn)有以下幾點(diǎn):

  • 使用 Vue.filter 定義全局過濾器。
  • 使用 Vue 實(shí)例上的 filters 屬性定義局部過濾器。
  • 過濾器的串聯(lián)和參數(shù)的傳遞。