91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

哪里使用Vue串聯過濾器

發布時間:2020-07-29 12:24:54 來源:億速云 閱讀:134 作者:小豬 欄目:web開發

這篇文章主要講解了哪里使用Vue串聯過濾器,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

平時開發中,需要用到過濾器的地方有很多,比如單位轉換、數字打點、文本格式化等,比如:

Vue.filter('toThousandFilter', function (value) {
 if (!value) return ''
 value = value.toString()
 return .replace(str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g, '$1,')
})

實現效果:

30000 => 30,000

當然這只是常規用法,沒什么好說的。下面來說一個我在開發中遇到的一個需要用到串聯過濾器的使用場景。

假設需要獲取一個訂單列表,其中的每一項的 status 字段用來表示訂單狀態:        

 {
      id: '',
      order_num: '123456789',
      goodList: [ ... ],
      address: { ... },
      status: 1 // 1 待付款 2 待發貨 3 待收貨
     }

那我們拿到這個數據在,v-for 的時候,肯定會這樣做:

 <template>
  <!-- ... -->
  <span class="order_status">{{ orderItem.status | getOrderStatus }}</span>
  <!-- ... -->
</template>
<script>
 export default {
  // ...
  filters: {
    getOrderStatus(status) {
      switch (status.toString()) {
        case '1':
          return '待付款';
        case '1':
          return '待發貨';
        case '1':
          return '待收貨';
        default:
          return '';
      }
    }
  }
  // ...
 }
</script>
<style scoped type="scss">
  // ...
  .order_status {
    font-size: 14px;
  }
  // ...
</style>

這樣,表示狀態的 1, 2, 3 就變成了 待付款,待發貨,待收貨。這沒有什么問題。但是,需求來了,當訂單未付款時,表示狀態的文字應該為紅色。就是當狀態為 待付款 時,文字要為紅色!這個問題曾經困擾了有一段時間,用了各種辦法,雖然也是實現了需求,但終歸不太優雅。直到最近在翻看 vue 文檔,才想起來有串聯過濾器的用法,可以完美解決這個需求,上碼:

<template>
  <!-- ... -->
  <span class="order_status" :class="orderItem.status | getOrderStatus | getOrderStatusClass">{{ orderItem.status | getOrderStatus }}</span>
  <!-- ... -->
</template>
<script>
 export default {
  // ...
  filters: {
    getOrderStatus(status) {
      switch (status.toString()) {
        case '1':
          return '待付款';
        case '1':
          return '待發貨';
        case '1':
          return '待收貨';
        default:
          return '';
      }
    },
    getOrderStatusClass(status) {
      if (status === '待付款') {
        return 'not-pay'
      }
      return ''
    }
  }
  // ...
 }
</script>
<style scoped type="scss">
  // ...
  .order_status {
    font-size: 14px;
    &.not-pay {
      color: red;
    }
  }
  // ...
</style>

就這么簡單。

關于過濾器,這里還有幾點要注意的:

  • 過濾器必須是個純函數
  • 過濾器中拿不到 vue 實例,這是 vue 故意這么做的
  • 在全局注冊過濾器是用 Vue.filter(),局部則是 filters: {}
  • 在方法中調用過濾器方法為: this.$options.filters.XXX

看完上述內容,是不是對哪里使用Vue串聯過濾器有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

略阳县| 同心县| 砀山县| 云安县| 淮滨县| 高青县| 绥芬河市| 白银市| 三江| 海盐县| 萨嘎县| 安达市| 桃园县| 漯河市| 自治县| 泰州市| 宜都市| 弥勒县| 巴楚县| 资讯| 蚌埠市| 德州市| 汶上县| 济源市| 莆田市| 广平县| 大港区| 玉树县| 沙湾县| 开封市| 梅河口市| 白山市| 临猗县| 曲靖市| 樟树市| 土默特左旗| 杨浦区| 张家界市| 盘锦市| 和平县| 本溪|