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 相关文章推荐
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
Feb 03 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
Mar 14 Javascript
JS与C#编码解码
Dec 03 Javascript
jquery列表拖动排列(由项目提取相当好用)
Jun 17 Javascript
JS常用函数使用指南
Nov 23 Javascript
jQuery插件扩展extend的简单实现原理
Jun 24 Javascript
AngularJS实现动态添加Option的方法
May 17 Javascript
Angularjs Promise实例详解
Mar 15 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
Oct 09 Javascript
jQuery实现日历效果
Sep 11 jQuery
jquery实现异步文件上传ajaxfileupload.js
Oct 23 jQuery
vue移动端下拉刷新和上滑加载
Oct 27 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缓存技术的多种方法小结
2012/08/14 PHP
ajax取消挂起请求的处理方法
2013/03/18 PHP
php设计模式之观察者模式的应用详解
2013/05/21 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
PHP字典树(Trie树)定义与实现方法示例
2017/10/09 PHP
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
js回调函数仿360开机
2019/12/26 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
Python使用turtule画五角星的方法
2015/07/09 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python保存网页图片到本地的方法
2018/07/24 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
理工大学毕业生自荐信
2013/11/01 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
大学生就业协议书范本(适用于公司企业)
2014/10/07 职场文书
人工作失职检讨书
2015/05/05 职场文书
2015年加油站工作总结
2015/05/13 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
详解Vue的options
2021/05/15 Vue.js