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 相关文章推荐
bcastr2.0 通用的图片浏览器
Nov 22 Javascript
深入认识JavaScript中的函数
Jan 22 Javascript
Javascript 阻止javascript事件冒泡,获取控件ID值
Jun 27 Javascript
简易js代码实现计算器操作
Apr 15 Javascript
express的中间件cookieParser详解
Dec 04 Javascript
javascript结合fileReader 实现上传图片
Jan 30 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
Dec 04 Javascript
JS作用域深度解析
Dec 29 Javascript
easyui combogrid实现本地模糊搜索过滤多列
May 13 Javascript
剖析Angular Component的源码示例
Mar 23 Javascript
详解在create-react-app使用less与antd按需加载
Dec 06 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
Apr 10 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 CURL中传递cookie的方法步骤
2019/05/09 PHP
多广告投放代码 推荐
2006/11/13 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
Python切片知识解析
2016/03/06 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
python实现括号匹配的思路详解
2018/08/23 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
python实现定时发送qq消息
2019/01/18 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
python config文件的读写操作示例
2019/09/27 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
django 读取图片到页面实例
2020/03/27 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
外贸实习生自荐信范文
2013/11/24 职场文书
商场消防管理制度
2014/01/12 职场文书
八年级数学教学反思
2014/01/31 职场文书
运动会稿件200字
2014/02/07 职场文书
需求分析说明书
2014/05/09 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
挂职学习心得体会
2014/09/09 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle
Java 写一个简单的图书管理系统
2022/04/26 Java/Android