详解Vue2.0里过滤器容易踩到的坑


Posted in Javascript onJune 01, 2017

vue2.0里,不再有自带的过滤器,需要自己定义过滤器。定义的方法如下:

注册一个自定义过滤器,它接收两个参数:过滤器 ID 和过滤器函数。

Vue.filter('filtername',function(value,参数){
  return 参数+value.split('').reverse().join('');

 });

function里第一个参数value默认为使用这个过滤器的data对象内的值,在本例中是msg的值'you are mine'。

坑1:第一个参数必须为自身的值,后面可以加任意多的参数。数序颠倒就会出错。

下面来一个最常见的小例子来说明在使用vue2.0过滤器并结合v-text时遇到的其他的几个坑:

需求:在页面输出一段反转顺序的字符串。

完整代码如下:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>

</style>
</head>
<script src='./vue2.js'></script>
<script>
window.onload=function(){
 //类似于自定义指令,可以用全局方法 Vue.filter() 注册一个自定义过滤器,它接收两个参数:过滤器 ID 和过滤器函数。
 Vue.filter('reverseString',function(value,myString){
  // function里第一个参数value默认为使用这个过滤器的data值,在本例中是msg的值'you are mine'。请注意:第一个参数必须为自身的值,后面可以加任意多的参数
  return myString+value.split('').reverse().join('');

 });

 new Vue({
  el:'#box',
  data:{
   msg:'you are mine' 
  } 
 });
};
</script>
<body>

<div id='box'>
 <p>msg is: <br>{{msg}}</p>
 <hr>
 <p>reverse msg is: <br>{{msg|reverseString( 'Hello:' )}}</p><!-- 在vue2.0里 过滤器只能用类似函数的写法reverseString( 'I must tell you:'),括号内是参数,不同于vue1.0的用空格后加参数的写法" msg|reverseString 'I must tell you:' " -->

 <!-- <p v-text="msg|reverseString( 'I must tell you:' )"></p>失效 -->
 <!-- v-text里用过滤器失效,原因是在vue2.0里 管道符‘|'只能用在mousetache和v-bind中 -->
</div>

</body>
</html>

输出结果为:

msg is: 
you are mine

reverse msg is: 
Hello:enim era uoy

坑2:在vue2.0里 过滤器只能用类似函数的写法reverseString( ‘I must tell you:'),括号内是参数,不同于vue1.0的用空格后加参数的写法;

坑3:v-text里用过滤器失效,原因是在vue2.0里 管道符‘|'只能用在mousetache和v-bind中。

以上只是一个简单的过滤器的用法,如果涉及到复杂的数据处理的过滤器,比如实现vue1.0里用到过滤器套过滤器的功能,个人感觉也可以用computed来代替过滤器。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JSON.parse 解析字符串出错的解决方法
Jul 08 Javascript
使用UglifyJS合并/压缩JavaScript的方法
Mar 07 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
Mar 31 Javascript
第十章之巨幕页头缩略图与警告框组件
Apr 25 Javascript
JavaScript表单验证的两种实现方法
Feb 11 Javascript
BootStrap与Select2使用小结
Feb 17 Javascript
jquery分页插件pagination使用教程
Oct 23 jQuery
微信小程序使用canvas的画图操作示例
Jan 18 Javascript
一百行JS代码实现一个校验工具
Apr 30 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
Aug 21 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 Javascript
详解如何在Javascript中使用Object.freeze()
Oct 18 Javascript
Angularjs验证用户输入的字符串是否为日期时间
Jun 01 #Javascript
jQuery实现web页面樱花坠落的特效
Jun 01 #jQuery
jquery网页加载进度条的实现
Jun 01 #jQuery
BootStrap selectpicker后台动态绑定数据
Jun 01 #Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
Jun 01 #Javascript
Require.JS中的几种define定义方式示例
Jun 01 #Javascript
关于javascript获取内联样式与嵌入式样式的实例
Jun 01 #Javascript
You might like
使用Apache的rewrite技术
2006/06/22 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
javascript 事件绑定问题
2011/01/01 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
vue中如何使用ztree
2018/02/06 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
用python处理MS Word的实例讲解
2018/05/08 Python
python爬取哈尔滨天气信息
2018/07/14 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
如何写好优秀的创业计划书
2014/01/30 职场文书
社团文化节策划书
2014/02/01 职场文书
幼儿教师求职信
2014/05/24 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
就业推荐表导师评语
2014/12/31 职场文书
公证书
2019/04/17 职场文书
2019财务毕业实习报告
2019/06/27 职场文书