位置: 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神经网络

  • 苹果13promax屏幕材质是什么(苹果13promax的屏幕很暗)

    苹果13promax屏幕材质是什么(苹果13promax的屏幕很暗)

  • word怎么只改英文字体(word怎么只改英文)

    word怎么只改英文字体(word怎么只改英文)

  • 骁龙855plus的手机有哪些(骁龙855plus手机有哪些2020)

    骁龙855plus的手机有哪些(骁龙855plus手机有哪些2020)

  • 微信号登不上怎么把钱取出来(微信号登不上怎么解除实名认证)

    微信号登不上怎么把钱取出来(微信号登不上怎么解除实名认证)

  • iphone6s尾插漏电特征(iphone6sp尾插坏了症状)

    iphone6s尾插漏电特征(iphone6sp尾插坏了症状)

  • 手机显示黑白色怎么变回彩色的(手机显示黑白色怎么变回彩色的oppo)

    手机显示黑白色怎么变回彩色的(手机显示黑白色怎么变回彩色的oppo)

  • 华为手机左右键在什么地方设置(华为手机左右键怎么显示出来)

    华为手机左右键在什么地方设置(华为手机左右键怎么显示出来)

  • 拼多多是哪个公司旗下(拼多多是哪个公司出的?)

    拼多多是哪个公司旗下(拼多多是哪个公司出的?)

  • 怎样成为淘货源买家(如何成为淘货源卖家)

    怎样成为淘货源买家(如何成为淘货源卖家)

  • 华为手机怎么调节字体大小(华为手机怎么调24小时时间格式)

    华为手机怎么调节字体大小(华为手机怎么调24小时时间格式)

  • 苹果下载的音乐为什么在本地找不到(苹果下载的音乐怎么导入剪映)

    苹果下载的音乐为什么在本地找不到(苹果下载的音乐怎么导入剪映)

  • 苹果手机微信突然变成英文(苹果手机微信突然没声音了怎么回事)

    苹果手机微信突然变成英文(苹果手机微信突然没声音了怎么回事)

  • 苹果手机怎么当电视遥控器(苹果手机怎么当空调遥控器用)

    苹果手机怎么当电视遥控器(苹果手机怎么当空调遥控器用)

  • 手机摔蓝屏了怎么修复(手机摔了蓝屏了)

    手机摔蓝屏了怎么修复(手机摔了蓝屏了)

  • 无主题短信是怎么回事(无主题短信怎么删除不了)

    无主题短信是怎么回事(无主题短信怎么删除不了)

  • nfc一直开启耗电多吗(nfc一直打开耗电吗)

    nfc一直开启耗电多吗(nfc一直打开耗电吗)

  • 蓝屏a5是什么原因(蓝屏a5是什么原因导致的)

    蓝屏a5是什么原因(蓝屏a5是什么原因导致的)

  • iphone11外屏玻璃可以单独换吗(iphone11外屏玻璃更换多少钱)

    iphone11外屏玻璃可以单独换吗(iphone11外屏玻璃更换多少钱)

  • vivoz5x什么时候上市(vivoz5x什么时候更新originos2.0)

    vivoz5x什么时候上市(vivoz5x什么时候更新originos2.0)

  • word文字横排改竖排(word文字竖排居中)

    word文字横排改竖排(word文字竖排居中)

  • 手机怎么往mp3sd卡上下音乐(手机怎么往mp3下载歌曲)

    手机怎么往mp3sd卡上下音乐(手机怎么往mp3下载歌曲)

  • 微信卸载如何恢复记录(微信卸载如何恢复)

    微信卸载如何恢复记录(微信卸载如何恢复)

  • 三星s10家有红外线吗(三星s10手机红外线功能怎么开启)

    三星s10家有红外线吗(三星s10手机红外线功能怎么开启)

  • 抖音怎么开通橱窗功能(抖音怎么开通橱窗2023)

    抖音怎么开通橱窗功能(抖音怎么开通橱窗2023)

  • 苹果手机蓝色的爱心怎么打出来(苹果手机蓝色的麦克风怎么关)

    苹果手机蓝色的爱心怎么打出来(苹果手机蓝色的麦克风怎么关)

  • 手机下载什么软件可以做表格(手机下载什么软件可以制作表格)

    手机下载什么软件可以做表格(手机下载什么软件可以制作表格)

  • grid 栅格/网格布局学习笔记(栅格布局实现)

    grid 栅格/网格布局学习笔记(栅格布局实现)

  • 私立学校要交社保吗
  • 图书计入什么费用
  • 经济利益的流入一定是收入吗
  • 空调可以直接做费用吗
  • 如何确定一个企业在网络营销中的目标受众?
  • 小规模纳税人开专票需要交税吗
  • 待认证进项税是借方还是贷方
  • 私对公转账可以撤回吗
  • 行政事业性收费票据
  • 外商投资企业如何注资
  • 商业企业销售化妆品
  • 空调损坏
  • 发票领购簿遗失怎么办
  • 不动产抵扣进项税
  • 中国银行结算包括哪些内容?怎么做会计分录?
  • 材料存货的期末计量有何特点
  • 耕地占用税和契税什么时候交
  • 计算房产税时容积率怎么算
  • 个人房产税征收标准
  • 小规模纳税人按什么标准纳税
  • 在固定资产中
  • 取得抵债房产的涉税风险,你清楚吗?
  • 公司帮员工买的保险
  • 尚未开发的土地使用权摊销
  • 现金存入对公账户用途写什么
  • 自然人独资企业和一人有限责任公司
  • 营业外收入属于什么会计要素
  • 原始凭证与记账凭证的填制实验报告
  • 原材料暂估入账产生的差异如何处理
  • Proxmox ve(PVE) 显示CPU和硬盘温度、UPS信息
  • 政府补助退回的账务处理
  • 固定资产更新改造支出资本化
  • 发行股票的手续费、佣金如何会计处理?
  • win10系统安装详细步骤
  • linux init3
  • smart方法的含义和重要性
  • 付临时工资怎么入账
  • php开源微商城
  • 如何使用php写一个网页
  • 游戏的系统架构
  • 税控盘抵扣怎么做账
  • 去年的普票可以开红字吗
  • 其他应收款的核算范围包括
  • 计提工资薪金
  • Python的aiohttp模块如何使用?
  • 帝国cms到底好不好
  • 固定资产清理的金额怎么算
  • 增值税发票丢失可以重开吗
  • 哪些情况属于
  • 企业收到合同保险怎么办
  • 查询发票真伪
  • 无法收回的款项怎么记账
  • 《关于工资总额组成的规定》第四条
  • 残保金逾期怎么办
  • 普通发票和增值发票的区别在哪里
  • 房屋销售预收如何交税
  • linux怎么统计文件中出现字符串的数量
  • vista ui
  • win7更改win10系统要怎么更改
  • xp桌面字体有阴影怎么去掉
  • nhaspx.exe是什么
  • 苹果mac外接显示器合上盖子怎么在显示器上继续
  • hptasks.exe是病毒吗 是什么进程 hptasks进程说明
  • xp系统注册表在哪
  • 红帽企业版更新了吗
  • linux网络设置在哪里
  • 在linux操作系统中把外部设备当作文件统一管理
  • linux系统文件修复命令
  • nodejs nodemon
  • shell切分
  • cocos 2dx
  • 用unity做2d游戏
  • jquery层次选择器主要包括哪几种分类
  • jquery-easyui-1.3.3
  • unity3d ik
  • python坑人代码
  • 收购烟叶可抵扣进项税
  • 国家税务局广东省电子税务总局手机版
  • 荆州市物业管理
  • 耕地占用税林地有减免吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设