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 相关文章推荐
使用jQuery的ajax功能实现的RSS Reader 代码
Sep 03 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
May 20 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
Jun 29 Javascript
jquery插件制作教程 txtHover
Aug 17 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
Mar 22 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
Oct 20 Javascript
javascript实现一个简单的弹出窗
Feb 22 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
Mar 28 Javascript
新手必须知的Node.js 4个JavaScript基本概念
Sep 16 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
Jul 03 Javascript
jquery多级树形下拉菜单的实例代码
Jul 09 jQuery
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
Aug 14 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
人大复印资料处理程序_补充篇
2006/10/09 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
python实现在线翻译
2020/06/18 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
课程改革实施方案
2014/03/16 职场文书
党委班子剖析材料
2014/08/21 职场文书
安全生产标语大全
2014/10/06 职场文书
导游词之无锡梅园
2019/11/28 职场文书
分享一些Java的常用工具
2021/06/11 Java/Android
Python天气语音播报小助手
2021/09/25 Python
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫
详解Go语言中Get/Post请求测试
2022/06/01 Golang