Vue项目引发的「过滤器」使用教程


Posted in Javascript onMarch 12, 2019

前言

最近在项目的开发中,出现一些格式化数据的情况,比如字母的大小写,比如一些价格的数据格式。等等一些格式的显示。

Name Price
BTC $3896.23
ETH $136.64

在上面的表格中,我们需要处理数据的显示。这是我们时常遇到的情况。

通常我们会直接处理数据的输出,可以这么做。

computed: {
 result() {
 return this.prices.map(price => "$" + price);
 }
}

这些都是通过修改数据做到的。

不过,Vue 中给我们提供了一种格式化数据功能「过滤器」。

filters 与 计算属性(computed),方法(methods)不同的是,filters 不会修改数据,只是改变用户看到的输出。Vue 从 2.0 版本之后去除了内置的「过滤器」。所以我们在使用时需要自己去定义。

接下来,我们就来看看看在 Vue 中如何使用「过滤器」。

首先过滤器可以用在两个地方:差值表达式 {{ }} 和 v-bind 表达式,然后由管道操作符“ | ”进行指示。

知道在什么地方时候,那我们就再来看看如何定义过滤器。我们有两种方式定义。

本地过滤器

我们可以把过滤器定义在当前使用的组件内。我们利用过滤器来修改上面的表格输出格式。

{{price.price | currency}}

filters: {
 currency(value) {
  return "$" + value;
 }
}

全局过滤器

这里需要注意的是,使用全局过滤器时,必须要在 Vue 的实例之前。

Vue.filter("currency", function (value) {
 return "$" + value;
});


new Vue({
 //...
})

此时,我们就可以愉快的在组件中使用过滤器了。

用户体验是非常重要的一个环节,我们可以利用过滤器去优化。通常利用表格展示数据时,你无法保证每个字段的属性值都是存在且合理的。

这时就可以利用「过滤器」。把不合理的值显示为 “--”,这是最为常见的手段。

filters: {
 filterPrice(value) {
  return value ? value : "--";
 }
}

过滤器参数

过滤器会把表达式中的值始终当作函数的第一个参数。由于过滤器是一个函数,所以我们也可以额外的传入参数。

{{ data | filterPrice(arg1, arg2) }}

比如我们把上面的案例修改一下,我们不仅仅需要把美元格式化,我们还需要格式化人民币等等,很多种的符号,这时就可以利用传参的方式。

{{price.price | filterPrice('$')}}

filters: {
 filterPrice(price, prefix) {
  return prefix + price;
 }
}

除此之外,「过滤器」还可以进行串联使用。

{{ data | filterA | filterB }}

串联使用时,会把第一个产生的结果,作为参数传递给第二个过滤器使用,以此类推。

好了今天我们 Vue 的过滤器就说到这,大家不妨多多尝试下在项目中使用,提高我们的开发效率,不能总是想着去修改数据,这些功能与套路有时会发挥很好的价值。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
从javascript语言本身谈项目实战
Dec 27 Javascript
在Z-Blog中运行代码[html][/html](纯JS版)
Mar 25 Javascript
从阿里妈妈发现的几个不错的表单验证函数
Sep 21 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
Nov 12 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
Jun 27 Javascript
JavaScript Promise启示录
Aug 12 Javascript
Javascript获取表单名称(name)的方法
Apr 02 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
Dec 10 Javascript
jQuery.deferred对象使用详解
Mar 18 Javascript
jQuery Checkbox 全选 反选的简单实例
Nov 29 Javascript
vue ssr 指南详读
Jun 29 Javascript
layui 解决富文本框form表单提交为空的问题
Oct 26 Javascript
通过JS运行机制的角度说说作用域
Mar 12 #Javascript
Jquery的autocomplete插件用法及参数讲解
Mar 12 #jQuery
如何使用pm2快速将项目部署到远程服务器
Mar 12 #Javascript
详解用Webpack与Babel配置ES6开发环境
Mar 12 #Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
Mar 12 #Javascript
javascript中数组的常用算法深入分析
Mar 12 #Javascript
详解javascript 变量提升(Hoisting)
Mar 12 #Javascript
You might like
PHP MSSQL 存储过程的方法
2008/12/24 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
JavaScript知识点整理
2015/12/09 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
整理Python 常用string函数(收藏)
2016/05/30 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
python 高阶函数简单介绍
2021/02/19 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
销售总监岗位职责
2014/01/04 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
建设工地安全标语
2014/06/07 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
大学生实训报告总结
2014/11/05 职场文书
毕业实习感受与体会
2015/05/26 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android