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+xml+ajax的无刷新树结构(无css,后台是c#)
Jun 02 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
Oct 22 Javascript
纯js简单日历实现代码
Oct 05 Javascript
用js的for循环获取radio选中的值
Oct 21 Javascript
JS循环遍历JSON数据的方法
Jul 08 Javascript
json实现前后台的相互传值详解
Jan 05 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
May 14 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
Jul 10 Javascript
解决angularjs中同步执行http请求的方法
Aug 13 Javascript
layer弹出层全屏及关闭方法
Aug 17 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
Apr 11 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
Sep 07 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动态生成指定大小随机图片的方法
2016/03/25 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
QUnit jQuery的TDD框架
2010/11/04 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
手把手教你vue-cli单页到多页应用的方法
2018/05/31 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
Django数据库表反向生成实例解析
2018/02/06 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
为什么要有struct关键字
2012/05/08 面试题
管理学专业个人求职信范文
2013/12/13 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
初中体育课教学反思
2016/02/16 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书