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 相关文章推荐
javascript vvorld 在线加密破解方法
Nov 13 Javascript
javascript字符串拼接的效率问题
Dec 25 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
Aug 22 Javascript
jquery批量控制form禁用的代码
Aug 06 Javascript
调整小数的格式保留小数点后两位
May 14 Javascript
jquery简单图片切换显示效果实现方法
Jan 14 Javascript
jQuery插件MixItUp实现动画过滤和排序
Apr 12 Javascript
jQuery Mobile框架中的表单组件基础使用教程
May 17 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
Jan 24 Javascript
Vue中实现权限控制的方法示例
Jun 07 Javascript
Js代码中的span拼接问题解决
Nov 22 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
Dec 16 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
二招解决php乱码问题
2012/03/25 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
对python中的xlsxwriter库简单分析
2018/05/04 Python
python实现比较文件内容异同
2018/06/22 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
党建示范点实施方案
2014/03/12 职场文书
甘南现象心得体会
2014/09/11 职场文书
家庭贫困证明
2014/09/23 职场文书
三下乡个人总结
2015/03/04 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书