详解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 限制输入脚本大全
Nov 03 Javascript
JavaScript DOM 学习第三章 内容表格
Feb 19 Javascript
避免 showModalDialog 弹出新窗体的原因分析
May 31 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
Nov 27 Javascript
深入探讨前端框架react
Dec 09 Javascript
超简单的Vue.js环境搭建教程
Mar 17 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
Jul 19 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
Oct 31 Javascript
vue使用vue-i18n实现国际化的实现代码
Apr 08 Javascript
详解webpack 入门与解析
Apr 09 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 jQuery
vue-cli3 取消eslint校验代码的解决办法
Jan 16 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
php access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
使用focus方法让光标默认停留在INPUT框
2014/07/29 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
详解Python中的文本处理
2015/04/11 Python
python添加模块搜索路径方法
2017/09/11 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
HTML5计时器小例子
2013/10/15 HTML / CSS
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
abstract class和interface有什么区别
2013/08/04 面试题
世界读书日的活动方案
2014/08/20 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle