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 单击li防止重复加载的实现代码
Dec 24 Javascript
收集的10个免费的jQuery相册
Feb 26 Javascript
jQuery实现的原图对比窗帘效果
Jun 15 Javascript
JavaScript中合并数组的N种方法
Sep 16 Javascript
在JavaScript中处理时间之getHours()方法的使用
Jun 10 Javascript
jQuery事件委托之Safari
Jul 05 Javascript
JavaScript 随机验证码的生成实例代码
Sep 22 Javascript
angular中的http拦截器Interceptors的实现
Feb 21 Javascript
vue+axios+element ui 实现全局loading加载示例
Sep 11 Javascript
vue webpack build资源相对路径的问题及解决方法
Jun 04 Javascript
uniapp实现横向滚动选择日期
Oct 21 Javascript
在vue中使用jsonp进行跨域请求接口操作
Oct 29 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语法(5)
2006/10/09 PHP
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
Python getopt模块处理命令行选项实例
2014/05/13 Python
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
python发送HTTP请求的方法小结
2015/07/08 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
python一些性能分析的技巧
2020/08/30 Python
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
毕业生找工作的自我评价
2013/10/18 职场文书
护士自荐信范文
2013/12/15 职场文书
宣传工作经验材料
2014/06/02 职场文书
相亲活动方案
2014/08/26 职场文书
电力培训心得体会
2014/09/02 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
小学推普周活动总结
2015/05/07 职场文书