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 相关文章推荐
正则表达式语法
Oct 09 Javascript
关闭页面window.location事件未执行的原因及解决方法
Sep 01 Javascript
JS图片等比例缩放方法完整示例
Aug 03 Javascript
Angular设置title信息解决SEO方面存在问题
Aug 19 Javascript
AngularJS 防止页面闪烁的方法
Mar 09 Javascript
Vue的事件响应式进度条组件实例详解
Feb 04 Javascript
Vue项目中如何使用Axios封装http请求详解
Oct 23 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 Javascript
JS面向对象编程实现的拖拽功能案例详解
Mar 03 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
Jan 13 Vue.js
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
Jan 28 Javascript
JavaScript阻止事件冒泡的方法
Dec 06 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
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
js程序中美元符号$是什么
2008/06/05 Javascript
Javascript Select操作大集合
2009/05/26 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
详解django自定义中间件处理
2018/11/21 Python
python导入模块交叉引用的方法
2019/01/19 Python
python实现五子棋人机对战游戏
2020/03/25 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
店铺转让协议书
2015/01/29 职场文书
三八节活动简报
2015/07/20 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
java调用Restful接口的三种方法
2021/08/23 Java/Android