Vue.js每天必学之过滤器与自定义过滤器


Posted in Javascript onSeptember 07, 2016

基础

类似于自定义指令,可以用全局方法 Vue.filter() 注册一个自定义过滤器,它接收两个参数:过滤器 ID 和过滤器函数。过滤器函数以值为参数,返回转换后的值:

Vue.filter('reverse', function (value) {
 return value.split('').reverse().join('')
})
<!-- 'abc' => 'cba' -->
<span v-text="message | reverse"></span>

过滤器函数可以接收任意数量的参数:

Vue.filter('wrap', function (value, begin, end) {
 return begin + value + end
})
<!-- 'hello' => 'before hello after' -->
<span v-text="message | wrap 'before' 'after'"></span>

双向过滤器

目前我们使用过滤器都是在把来自模型的值显示在视图之前转换它。不过也可以定义一个过滤器,在把来自视图(<input> 元素)的值写回模型之前转化它:

Vue.filter('currencyDisplay', {
 // model -> view
 // 在更新 `<input>` 元素之前格式化值
 read: function(val) {
 return '$'+val.toFixed(2)
 },
 // view -> model
 // 在写回数据之前格式化值
 write: function(val, oldVal) {
 var number = +val.replace(/[^\d.]/g, '')
 return isNaN(number) ? 0 : parseFloat(number.toFixed(2))
 }
})

动态参数

如果过滤器参数没有用引号包起来,则它会在当前 vm 作用域内动态计算。另外,过滤器函数的 this 始终指向调用它的 vm。例如:

<input v-model="userInput">
<span>{{msg | concat userInput}}</span>
Vue.filter('concat', function (value, input) {
 // `input` === `this.userInput`
 return value + input
})

上例比较简单,也可以用表达式达到相同的结果,但是对于更复杂的逻辑——需要多于一个语句,这时需要将它放到计算属性或自定义过滤器中。

内置过滤器 filterBy 和 orderBy,根据所属 Vue 实例的当前状态,过滤/排序传入的数组。

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
google 搜索框添加关键字实现代码
Apr 24 Javascript
js+html+css实现鼠标移动div实例
Jan 30 Javascript
如何使用json在前后台进行数据传输实例介绍
Apr 11 Javascript
解析使用JS 清空File控件的路径值
Jul 08 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
Dec 12 Javascript
javascript中AJAX用法实例分析
Jan 30 Javascript
javascript图片延迟加载实现方法及思路
Dec 31 Javascript
JS获取多维数组中相同键的值实现方法示例
Jan 06 Javascript
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
vue2.0组件之间传值、通信的多种方式(干货)
Feb 10 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
Oct 12 Javascript
前端vue如何使用高德地图
Nov 05 Javascript
详解AngularJS中ng-src指令的使用
Sep 07 #Javascript
AngularJS实现按钮提示与点击变色效果
Sep 07 #Javascript
JS实现简单易用的手机端浮动窗口显示效果
Sep 07 #Javascript
利用Angularjs实现幻灯片效果
Sep 07 #Javascript
轻松掌握JavaScript状态模式
Sep 07 #Javascript
JS简单实现tab切换效果的多窗口显示功能
Sep 07 #Javascript
JS实现的幻灯片切换显示效果
Sep 07 #Javascript
You might like
php 常用类整理
2009/12/23 PHP
ajax在joomla中的原生态应用代码
2012/07/19 PHP
php单例模式实现方法分析
2015/03/14 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python实现PS滤镜中马赛克效果示例
2018/01/20 Python
python3实现mysql导出excel的方法
2019/07/31 Python
jupyter notebook 重装教程
2020/04/16 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
大专生工程监理求职信
2013/10/04 职场文书
开业庆典答谢词
2014/01/18 职场文书
水果超市创业计划书
2014/01/27 职场文书
卖车协议书
2014/04/21 职场文书
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
给老婆的道歉信
2015/01/20 职场文书
家装电话营销开场白
2015/05/29 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android