详解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 相关文章推荐
msn上的tab功能Firefox对childNodes处理的一个BUG
Jan 21 Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
May 17 Javascript
javascript闭包的高级使用方法实例
Jul 04 Javascript
js模拟C#中List的简单实例
Mar 06 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
Sep 04 Javascript
一个不错的js html页面倒计时可精确到秒
Oct 22 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
Sep 02 Javascript
jQuery动态修改字体大小的方法【测试可用】
Sep 09 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
Dec 14 Javascript
基于JavaScript实现瀑布流效果
Mar 29 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
Sep 18 jQuery
vue-cli V3.0版本的使用详解
Oct 24 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+MYSQL的文章管理系统(一)
2006/10/09 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
详解ajax的data参数错误导致页面崩溃
2018/04/30 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
python检测服务器端口代码实例
2019/08/31 Python
python实现tail -f 功能
2020/01/17 Python
Python如何执行系统命令
2020/09/23 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
python 实现批量图片识别并翻译
2020/11/02 Python
本科毕业生自我鉴定
2013/11/02 职场文书
大学新生欢迎词
2014/01/10 职场文书
求职简历自荐信
2014/06/18 职场文书
初中生物教学反思
2016/02/20 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python