详解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 相关文章推荐
有关JavaScript的10个怪癖和秘密分享
Aug 28 Javascript
基于jQuery的360图片展示实现代码
Jun 14 Javascript
Eclipse去除js(JavaScript)验证错误
Feb 11 Javascript
node.js中的fs.writeSync方法使用说明
Dec 15 Javascript
基于javascript实现彩票随机数生成(简单版)
Apr 17 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
Aug 23 Javascript
Vue项目中添加锁屏功能实现思路
Jun 29 Javascript
JS重学系列之聊聊new操作符
Mar 04 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
May 24 Javascript
js类的继承定义与用法分析
Jun 21 Javascript
jdk1.8+vue elementui实现多级菜单功能
Sep 24 Javascript
使用js获取身份证年龄的示例代码
Dec 11 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
php实现的通用图片处理类
2015/03/24 PHP
php数据访问之查询关键字
2016/05/09 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
Firefox window.close()的使用注意事项
2009/04/11 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python 系统调用的实例详解
2017/07/11 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
基于python实现坦克大战游戏
2020/10/27 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
"序列点" 是什么
2016/07/29 面试题
《桂林山水》教学反思
2014/02/08 职场文书
教师评语大全
2014/04/28 职场文书
办理房产过户的委托书
2014/09/14 职场文书
党员理论学习心得体会
2016/01/21 职场文书
Redis Cluster 集群搭建你会吗
2021/08/04 Redis
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python