Vue2中的过滤器filter使用及注意说明

 更新时间:2022年09月14日 09:59:08   作者:未可知。  
这篇文章主要介绍了Vue2中的过滤器filter使用及注意说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Vue2中的过滤器是什么

什么是vue的过滤器

过滤器可以通俗理解成是一个特殊的方法,用来加工数据的

比如枚举值可以使用过滤器:如 1 2 3 4 对应 成功 失败 进行中 已退回 比如价格后面跟个过滤器,将价格格式化成小数点两位 比如时间格式化等,又比如可以过滤聊天中的某些脏话

过滤器怎么写

  <div id="app">
        <h3>过滤器基本使用</h3>
      //   <!--在双花括号中使用全局过滤器 格式:{{值 | 过滤器的名称}}-->
        <p> {{content|contentFilter}} </p>
     //    <!--在v-bind中使用全局过滤器 格式:v-bind:id="值 | 过滤器的名称"-->
        <p v-bind:id="1 | addZero">11</p>
        <h3>过滤器接收参数</h3>
        <p> {{ num1| add(num2,num3)}} </p>
    </div>
Vue.filter('contentFilter', function (value) {
            //全局过滤器
            if (!value) {
                return ""
            }
            return value.toUpperCase().replace('TMD', '*不许说脏话噢*').replace('SB', '*不许说脏话噢*')
        })
         Vue.filter("addZero",function(value){
               // 如果value的值小于10则在前面添加0然后返回,否则直接返回value值
               return value<10?"0"+value:value;
           });
        new Vue({
            el: '#app',
            data: {
                content: '小伙子,TMD就是个sb',
                num1: 40,
                num2: 60,
                num3: 70,
            },
             filters: {
                //局部过滤器(本地过滤器)
                add(n1, n2, n3) {
                    return n1 + n2 + n3
                }
            }
        })
      

注意:当全局过滤器和局部过滤器重名时,会采用局部过滤器

局部过滤器优先于全局过滤器被调用

一个表达式可以使用多个过滤器。过滤器之间需要用管道符“|”隔开。其执行顺序从左往右

注意filter方法在vue3中已被废除

vue3要精简代码,并且filter功能重复,filter能实现的功能,methods和计算属性基本上也可以实现。把filter这方面的vue源码给删掉,这样更加方便维护。

例如

使用computed实现

<template>
  <div id="app">
    <ul v-for="(item, index) in arr" :key="index">
      <li>快递公司:{{ item.deliverCompany }}</li>
      <!-- 使用计算属性 -->
      <li>运输状态:{{ computedText(item.expressState) }}</li>
    </ul>
  </div>
</template>
<script>
export default {
   data() {
    return {
      arr: [
        {
          deliverCompany: "京东快递",
          expressState: "1",
        },
        {
          deliverCompany: "顺丰快递",
          expressState: "2",
        },
        {
          deliverCompany: "中通快递",
          expressState: "3",
        },
        {
          deliverCompany: "邮政快递",
          expressState: "4",
        },
        {
          deliverCompany: "极兔快递",
          expressState: "5",
        },
        {
          deliverCompany: "某某快递",
          expressState: null,
        },
      ],
    };
  },
  computed: {
    computedText() {
      // 计算属性要return一个函数接收参数
      return function (state) {
        switch (state) {
          case "1":
            return "待发货";
            break;
          case "2":
            return "已发货";
            break;
          case "3":
            return "运输中";
            break;
          case "4":
            return "派件中";
            break;
          case "5":
            return "已收货";
            break;
          default:
            return "快递信息丢失";
            break;
        }
      };
    },
  },
};
</script>

使用methods实现

<template>
  <div id="app">
    <ul v-for="(item, index) in arr" :key="index">
      <li>快递公司:{{ item.deliverCompany }}</li>
      <!-- 使用方法 -->
      <li>运输状态:{{ methodsText(item.expressState) }}</li>
    </ul>
  </div>
</template>
<script>
export default {
  data() {
    return {
      arr: [
        {
          deliverCompany: "京东快递",
          expressState: "1",
        },
        {
          deliverCompany: "顺丰快递",
          expressState: "2",
        },
        {
          deliverCompany: "中通快递",
          expressState: "3",
        },
        {
          deliverCompany: "邮政快递",
          expressState: "4",
        },
        {
          deliverCompany: "极兔快递",
          expressState: "5",
        },
        {
          deliverCompany: "某某快递",
          expressState: null,
        },
      ],
    };
  },
  methods: {
    methodsText(state) {
      switch (state) {
        case "1":
          return "待发货";
          break;
        case "2":
          return "已发货";
          break;
        case "3":
          return "运输中";
          break;
        case "4":
          return "派件中";
          break;
        case "5":
          return "已收货";
          break;
        default:
          return "快递信息丢失";
          break;
      }
    },
  },
};
</script>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • vue watch监控对象的简单方法示例

    vue watch监控对象的简单方法示例

    这篇文章主要给大家介绍了关于vue watch监控对象的简单方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 源码浅析Vue3中的组件挂载

    源码浅析Vue3中的组件挂载

    这篇文章主要带大家从源码分析一下Vue3中的组件挂载的相关知识,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-09-09
  • Vue.js系列之vue-router(上)(3)

    Vue.js系列之vue-router(上)(3)

    这篇文章主要介绍了Vue.js系列之vue-router(上)(3)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • vue前端开发keepAlive使用详解

    vue前端开发keepAlive使用详解

    在开发中经常有从列表跳到详情页,然后返回详情页的时候需要缓存列表页的状态(比如滚动位置信息),这个时候就需要保存状态,要缓存状态
    2021-10-10
  • element-ui中el-row中设置:gutter间隔不生效问题

    element-ui中el-row中设置:gutter间隔不生效问题

    这篇文章主要介绍了element-ui中el-row中设置:gutter间隔不生效问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • vue项目引入字体.ttf的方法

    vue项目引入字体.ttf的方法

    今天小编就为大家分享一篇vue项目引入字体.ttf的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue中函数防抖节流的理解及应用实现

    Vue中函数防抖节流的理解及应用实现

    这篇文章主要介绍了Vue中函数防抖节流的理解及应用实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 基于Vue 撸一个指令实现拖拽功能

    基于Vue 撸一个指令实现拖拽功能

    这篇文章主要介绍了Vue 指令实现拖拽功能,实现原理很简单,文中通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • 详解VSCode配置启动Vue项目

    详解VSCode配置启动Vue项目

    这篇文章主要介绍了VSCode配置启动Vue项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • vue 实现用户登录方式的切换功能

    vue 实现用户登录方式的切换功能

    这篇文章主要介绍了vue 实现用户登录方式的切换功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04

最新评论