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 相关文章推荐
Js 本页面传值实现代码
May 17 Javascript
js获取系统的根路径实现介绍
Sep 08 Javascript
jquery导航制件jquery鼠标经过变色效果示例
Dec 05 Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
JavaScript正则表达式匹配 div  style标签
Mar 15 Javascript
微信小程序中实现一对多发消息详解及实例代码
Feb 14 Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 Javascript
详解React之父子组件传递和其它一些要点
Jun 25 Javascript
微信小程序webview 脚手架使用详解
Jul 22 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
Sep 28 Javascript
Javascript生成器(Generator)的介绍与使用
Jan 31 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获取一个变量的名字的方法
2014/09/05 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
jquery replace方法去空格
2017/05/08 jQuery
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
python内存管理分析
2015/04/08 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
Python排序函数的使用方法详解
2020/12/11 Python
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
学生实习推荐信范文
2013/11/26 职场文书
函授教育个人学习的自我评价
2013/12/31 职场文书
房地产销售计划书
2014/01/10 职场文书
打架检讨书500字
2014/01/29 职场文书
化工专业自荐书
2014/06/16 职场文书
师范生见习自我总结
2015/06/23 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书