位置: IT常识 - 正文

Vue2中过滤器的用法详解(vue过滤器可以异步吗)

编辑:rootadmin
Vue2中过滤器的用法详解

目录

一、过滤器的概念

二、过滤器的使用位置

三、过滤器的分类

1、全局过滤器

2、本地过滤器

四、过滤器应用实例

1、使用过滤器实现省略号

2、使用过滤器处理时间戳

五、Vue3中已废弃过滤器 


推荐整理分享Vue2中过滤器的用法详解(vue过滤器可以异步吗),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端vue过滤器,vue过滤器封装,vue.js过滤器,vue3过滤器,前端vue过滤器,vue中过滤器的使用,vue3过滤器,vue过滤器用法,内容如对您有帮助,希望把文章链接给更多的朋友!

过滤器是vue中的一个特性,作用是用于对文本进行格式化的作用。分为全局过滤器和私有过滤器(本地过滤器)2种。这篇文章介绍了Vue2中的过滤器filter使用方法及注意说明,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。

一、过滤器的概念

过滤器(Filters)是 vue 为开发者提供的功能,常用于文本的格式化。

过滤器可以用在两个地方:插值表达式和 v-bind 属性绑定。

过滤器应该被添加在 JavaScript 表达式的尾部,由“管道符”进行调用。

注意:在vue 1.0中有内置的过滤器,在2.0中去掉了内置过滤器,只有自定义过滤器 

二、过滤器的使用位置

过滤器只能应用在两个地方:双花括号插值和v-bind表达式(后者从 2.1.0+ 开始支持)。例如:

<!--在双花括号中使用 格式:{{值 | 过滤器的名称}}--><div>{{3 | addZero}}</div><!--在v-bind中使用 格式:v-bind:id="值 | 过滤器的名称"--><div v-bind:id="1 | addZero">11</div>

关于Vue2中的过滤器

👉 什么是vue的过滤器  

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

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

👉 如何写过滤器?

<!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>过滤器</title> <!--引入vue.js--> <script src="node_modules/vue/dist/vue.js"></script> <script> window.onload = function () { // 定义全局过滤器 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; }); // 构建vue实例 new Vue({ el: "#app", data: { content: "小伙子,TMD就是个sb", num1: 40, num2: 60, num3: 70, }, filters: { //局部过滤器(本地过滤器) add(n1, n2, n3) { return n1 + n2 + n3; }, }, }); }; </script> </head> <body> <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> </body></html>

运行结果:

三、过滤器的分类

过滤器分为以下两种类型:

1、全局过滤器

多个 vue 实例之间共享过滤器,就可以定义全局过滤器

示例代码如下:

<!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>过滤器</title> <!--引入vue.js--> <script src="node_modules/vue/dist/vue.js"></script> <script> window.onload = function () { // 定义全局过滤器 Vue.filter("addZero", function (value) { // 如果value的值小于10则在前面添加0然后返回,否则直接返回value值 return value < 10 ? "0" + value : value; }); // 构建vue实例 new Vue({ el: "#my", data: {}, // 方法 methods: {}, }); }; </script> </head> <body> <div id="my"> <!--在双花括号中使用全局过滤器 格式:{{值 | 过滤器的名称}}--> <div>{{3 | addZero}}</div> <div>{{15 | addZero}}</div> <!--在v-bind中使用全局过滤器 格式:v-bind:id="值 | 过滤器的名称"--> <div v-bind:id="1 | addZero">11</div> <div v-bind:id="12 | addZero">15</div> </div> </body></html>

运行效果:

关于全局过滤器的说明

如果希望在多个 vue 实例之间共享过滤器,则可以按照如下的格式定义全局过滤器

2、本地过滤器

在 filters 节点下定义的过滤器,称为“私有过滤器”,因为它只能在当前 vm 实例所控制的 el 区域内使用。——要定义到 filters 节点下,本质是一个函数

Vue2中过滤器的用法详解(vue过滤器可以异步吗)

 (1)在插值表达式或v-bind属性中使用 管道符

(2)在vue实例的 filters 节点中定义过滤方法 

 

示例代码如下: 

<!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>过滤器</title> <!--引入vue.js--> <script src="node_modules/vue/dist/vue.js" ></script> <script> window.onload=function(){ // 定义全局过滤器 Vue.filter("addZero",function(value){ // 如果value的值小于10则在前面添加0然后返回,否则直接返回value值 return value<10?"0"+value:value; }); // 构建vue实例 new Vue({ el:"#my", data:{ }, // 方法 methods:{ }, // 定义本地过滤器 filters:{ roundNum:function(value){ // 四舍五入 小数点后保留两位 return value.toFixed(2); }, roundNumWithPara:function(value,digit){ // 根据digit返回相应位数的小数 return value.toFixed(value,digit); } } }) } </script></head><body> <div id="my"> <!--在双花括号中使用全局过滤器 格式:{{值 | 过滤器的名称}}--> <div>{{3 | addZero}}</div> <div>{{15 | addZero}}</div> <!--在v-bind中使用全局过滤器 格式:v-bind:id="值 | 过滤器的名称"--> <div v-bind:id="1 | addZero">11</div> <div v-bind:id="12 | addZero">15</div> <!--使用本地过滤器--> <div>原始值:3.1415926,过滤后的值:{{3.1415926 | roundNum}}</div> <!--保留小数点后3位--> <div>原始值:3.1415926,过滤后的值:{{3.1415926 | roundNumWithPara(3)}}</div> </div></body></html>

运行效果:

💠 过滤器的注意点:

👉🏻 当全局过滤器和局部过滤器重名时,会采用局部过滤器。——即此时会按照“就近原则”,调用的是”私有过滤器“。

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

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

👉🏻 在过滤器函数中,一定要有 return 值。

👉🏻 在过滤器的形参中,可以获取到“管道符”前面待处理的那个值。

四、过滤器应用实例1、使用过滤器实现省略号

代码示例如下:

<!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>使用过滤器实现省略号</title> <!--引入vue.js--> <script src="node_modules/vue/dist/vue.js"></script> <script> window.onload = function () { // 构建vue实例 new Vue({ el: "#my", data: { msg: "hello world", }, // 方法 methods: {}, // 定义本地过滤器 filters: { // 显示省略号 toShowEllipsis: function (value, len) { if (value === "" || value === undefined || value === null) return; if (value.length >= len) { var str = value.substr(0, len); return str + "..."; } else { return value; } }, }, }); }; </script> </head> <body> <div id="my"> <!--添加省略号 12345...--> <input type="text" v-model="msg" /> {{msg | toShowEllipsis(6)}} </div> </body></html>

运行效果:

2、使用过滤器处理时间戳

代码示例如下:

<!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>使用过滤器处理时间戳</title> <!--引入vue.js--> <script src="node_modules/vue/dist/vue.js"></script> <script> window.onload = function () { // 构建vue实例 new Vue({ el: "#my", data: { curTime: 1546181790, }, // 方法 methods: {}, // 定义本地过滤器 filters: { // 处理时间戳 将时间戳转换成具体时间 toTimeStamp: function (value) { //d 表示日期 t 日期和时间 var d = new Date(value * 1000); return ( d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds() ); }, }, }); }; </script> </head> <body> <div id="my"> <!--时间戳--> <p>当前时间:{{curTime | toTimeStamp }}</p> </div> </body></html>

运行效果:

五、Vue3中已废弃过滤器 

👋🏻 注意: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>

本文链接地址:https://www.jiuchutong.com/zhishi/299722.html 转载请保留说明!

上一篇:计算机视觉——图像视觉显著性检测(计算机视觉的应用)

下一篇:学习笔记:深度学习(2)——BP神经网络

  • 我的淘宝安全中心在哪(我的淘宝安全中心客服)

    我的淘宝安全中心在哪(我的淘宝安全中心客服)

  • 微信话题功能怎么用(微信 话题功能)

    微信话题功能怎么用(微信 话题功能)

  • 小米手机暖屏怎么调成冷屏(小米11冷屏暖屏)

    小米手机暖屏怎么调成冷屏(小米11冷屏暖屏)

  • 笔记本风扇不转后果(笔记本风扇不转怎么办)

    笔记本风扇不转后果(笔记本风扇不转怎么办)

  • 美拍网络打不开怎么办(美拍连不上网)

    美拍网络打不开怎么办(美拍连不上网)

  • 高速内存卡怎么区分(高速内存卡怎么区分A1和A3)

    高速内存卡怎么区分(高速内存卡怎么区分A1和A3)

  • wav是无损格式吗(wav是无损压缩格式吗)

    wav是无损格式吗(wav是无损压缩格式吗)

  • 微信设置免打扰语音通话有声音吗(微信设置免打扰后对方知道吗)

    微信设置免打扰语音通话有声音吗(微信设置免打扰后对方知道吗)

  • vce-tl00是什么型号的手机(vceal00什么型号)

    vce-tl00是什么型号的手机(vceal00什么型号)

  • f$2的单元格引用方式是哪种(f$2的单元格引用方式称为)

    f$2的单元格引用方式是哪种(f$2的单元格引用方式称为)

  • 移动数据怎么换卡2(移动数据怎么换卡1)

    移动数据怎么换卡2(移动数据怎么换卡1)

  • 微博草稿箱数据能恢复吗(微博草稿箱的内容如何查看)

    微博草稿箱数据能恢复吗(微博草稿箱的内容如何查看)

  • 苹果x跟苹果xsmax区别(苹果X跟苹果Xsmax)

    苹果x跟苹果xsmax区别(苹果X跟苹果Xsmax)

  • 为什么whatsapp一直在连接中(为什么WhatsApp一直检索登录)

    为什么whatsapp一直在连接中(为什么WhatsApp一直检索登录)

  • 华为手机接电话黑屏怎么回事(华为手机接电话时有电话打进来怎么设置)

    华为手机接电话黑屏怎么回事(华为手机接电话时有电话打进来怎么设置)

  • vivo怎么关闭云空间(vivo怎么关闭云相册)

    vivo怎么关闭云空间(vivo怎么关闭云相册)

  • oppo怎么弄桌面插件(oppo手机怎么弄桌面时间)

    oppo怎么弄桌面插件(oppo手机怎么弄桌面时间)

  • wps表格怎么改成文本(wps表格怎么改成横版)

    wps表格怎么改成文本(wps表格怎么改成横版)

  • 滴滴未成年打不了车(滴滴出行为什么未成年打不了)

    滴滴未成年打不了车(滴滴出行为什么未成年打不了)

  • 网易云什么时候出的(网易云什么时候火的)

    网易云什么时候出的(网易云什么时候火的)

  • 小米手机出现主菜单和重启怎么办(小米手机出现主菜单怎么回事)

    小米手机出现主菜单和重启怎么办(小米手机出现主菜单怎么回事)

  • 华为畅想9有红外线吗(华为畅想9手机有红外线遥控功能吗)

    华为畅想9有红外线吗(华为畅想9手机有红外线遥控功能吗)

  • 相互保保险范围(相互保是保险吗)

    相互保保险范围(相互保是保险吗)

  • 电脑学习网2022年苹果M1笔记本MACOS最强的FileZilla服务器FTP工具免费下载安装(有没有网上学电脑的)

    电脑学习网2022年苹果M1笔记本MACOS最强的FileZilla服务器FTP工具免费下载安装(有没有网上学电脑的)

  • Spring Boot + Redis 实现分布式锁,还有谁不会??(springbootredis密码加密)

    Spring Boot + Redis 实现分布式锁,还有谁不会??(springbootredis密码加密)

  • 出售写字楼需要什么手续
  • 外轮供应公司远洋运输供应公司的退税申报?
  • 建筑公司分包项目违法吗
  • 税收筹划的内容主要包括
  • 小企业外币交易的类型有哪些
  • 应收账款资金占用费公式
  • 留抵税额账上比申报表多
  • 小规模纳税人综合税负
  • 合伙企业对外长期股权投资收到分红 怎么处理
  • 怎么才算小企业
  • 外商投资企业是民营企业吗
  • 增值税发票常见问题
  • 事业单位结转资金和结余资金区别
  • 发票额开多了多出的金额怎么处理?
  • 2023年企业退休职工取暖费
  • 基本养老保险覆盖人数
  • 专用发票和普通发票费率
  • 营改增之前房产税计税依据
  • 一般纳税人苗木发票可以抵扣吗
  • 个体工商户季度不超过30万免增值税吗
  • 利息 财务费用
  • 预收账款的科目属性
  • 走物流的货物如何收费
  • 代付租金委托书怎么写
  • 电子发票字体不同
  • 以前月份个税没交怎么办
  • 总公司和分公司的关系证明
  • 农业大棚卷帘机用什么油
  • 滴滴电子发票怎么填写
  • 小规模增值税免税额
  • 新笔记本怎么激活windows11
  • win7纯净版怎么联网
  • 拍卖公司收入计入什么分录
  • php中url
  • 两台电脑文件共享,显示没有访问权限
  • 企业财务会计
  • zend框架教程
  • phpsql查询
  • 水利建设基金按季度缴纳
  • web全栈工程师是干什么的
  • php获取长度
  • 消耗品算什么科目
  • 企业对于预支工资的建议
  • 固定资产报废计入资产处置损益吗
  • 进项税额抵减额怎么算
  • 汇算清缴费用调整怎么做账
  • 企业与个人之间关系的理解
  • 纳税人可以享受六项专项附加扣除
  • 城建税免征怎么记账
  • 其它收益和递延收益的区别
  • 主营业务利润和利润总额
  • 应付职工薪酬包含哪些科目
  • 疫情防控重点保障物资生产企业可以按月
  • 个人技术转让费税率是多少
  • 企业的借款利息费用,扣除标准是?
  • 融资租赁首付款的性质
  • 旅客运送的一般规定
  • 固定资产一次性扣除政策
  • 经营性应付项目减少对经营活动现金
  • mysql从5.7升级至8.0
  • win7断电后无法启动
  • mac系统的控制面板在哪
  • 怎么压缩视频
  • 如何给电脑重装系统win7系统
  • centos7安装过程报错
  • 苹果mac使用
  • linux系统中
  • win7怎么禁止系统自动更新
  • linux内核架构
  • mysqld-nt.exe - mysqld-nt是什么进程 有什么用
  • 二分法查找 js
  • jquery弹出窗口的方法
  • 安卓核心架构
  • centos打开shell
  • js制作网页制作步骤
  • js简单实现图片轮播
  • 内蒙古电子税务局开票流程
  • 区域化管理的利与弊
  • ecco made in china
  • 朝阳地税局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设