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 相关文章推荐
获取非最后一列td值并将title设为该值的方法
Oct 30 Javascript
基于JavaScript操作DOM常用的API小结
Dec 01 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
May 16 Javascript
jquery+css3问卷答题卡翻页动画效果示例
Oct 26 Javascript
JS button按钮实现submit按钮提交效果
Nov 01 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
基于AngularJS实现表单验证功能
Jul 28 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
Oct 31 Javascript
Vue加载json文件的方法简单示例
Jan 28 Javascript
解决layui使用layui-icon出现默认图标的问题
Sep 11 Javascript
解决layui动态添加的元素click等事件触发不了的问题
Sep 20 Javascript
uni-app微信小程序登录授权的实现
May 22 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创建多级目录代码
2008/06/05 PHP
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
vue实现鼠标经过动画
2019/10/16 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
用python爬取租房网站信息的代码
2018/12/14 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
详解python中eval函数的作用
2019/10/22 Python
Python文件操作函数用法实例详解
2019/12/24 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
Python map及filter函数使用方法解析
2020/08/06 Python
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
linux面试题参考答案(8)
2015/08/11 面试题
史上最全面的Java面试题汇总!
2015/02/03 面试题
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
课改先进个人汇报材料
2014/01/26 职场文书
优秀部门获奖感言
2014/02/14 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
2014年教育工作总结
2014/11/26 职场文书
先进个人自荐书
2015/03/06 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python