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 相关文章推荐
B/S开发中常用javaScript技术与代码
Mar 09 Javascript
JavaScript入门教程(5) js Screen屏幕对象
Jan 31 Javascript
jQuery开发者都需要知道的5个小技巧
Jan 08 Javascript
Query中click(),bind(),live(),delegate()的区别
Nov 19 Javascript
jquery ajax jsonp跨域调用实例代码
Dec 11 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
Feb 27 Javascript
PHP 数组current和next用法分享
Mar 05 Javascript
jQuery实现简单的间隔向上滚动效果
Mar 09 Javascript
JavaScript获取网页表单提交方式的方法
Apr 02 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
Apr 19 Javascript
vue语法之拼接字符串的示例代码
Oct 25 Javascript
vue编写简单的购物车功能
Jan 08 Vue.js
详解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
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
js select常用操作控制代码
2010/03/16 Javascript
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
在Django中同时使用多个配置文件的方法
2015/07/22 Python
TensorFlow的权值更新方法
2018/06/14 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
python模糊图片过滤的方法
2018/12/14 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
静态变量和实例变量的区别
2015/07/07 面试题
青奥会口号
2014/06/12 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
自我查摆剖析材料
2014/10/11 职场文书
国庆节慰问信
2015/02/15 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
Golang 遍历二叉树
2022/04/19 Golang