详解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 相关文章推荐
jQuery EasyUI API 中文文档 - ComboBox组合框
Oct 07 Javascript
javascript验证身份证完全方法具体实现
Nov 18 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
May 14 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
Jan 26 Javascript
Vue.js系列之项目结构说明(2)
Jan 03 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
Jan 08 Javascript
JavaScript Base64 作为文件上传的实例代码解析
Feb 14 Javascript
jQuery EasyUI ProgressBar进度条组件
Feb 28 Javascript
webpack使用 babel-loader 转换 ES6代码示例
Aug 21 Javascript
还不懂递归?读完这篇文章保证你会懂
Jul 29 Javascript
微信小程序开发之tabbar图标和颜色的实现
Oct 17 Javascript
js常用正则表达式集锦
May 17 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之PHP语法学习笔记1
2006/12/17 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
javascript 函数调用的对象和方法
2010/07/01 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
js获取Get值的方法
2016/09/29 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
彻底理解Python中的yield关键字
2019/04/01 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
群胜软件Java笔试题
2012/09/29 面试题
社区工作者思想汇报
2014/01/13 职场文书
房地产广告词大全
2014/03/19 职场文书
法院授权委托书范文
2014/08/02 职场文书
2014年教师节活动总结
2014/08/29 职场文书
综合办公室岗位职责
2015/04/11 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
论语读书笔记
2015/06/26 职场文书
配置nginx 重定向到系统维护页面
2021/06/08 Servers
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技