当前位置: 首页 > Web前端 > vue.js

如何通过示例在Vue中创建和使用过滤器

时间:2023-03-31 20:25:10 vue.js

作者:EdZynda。已经收录在网站上,也整理了更多往期好评文章,也整理了很多我的文档和教程资料。欢迎来到星和完美。面试时可参考考点复习。我希望我们能在一起。与AngularJS类似,Vue.js有自己的数据转换和过滤方法,但必须记住,过滤器不会改变原始数据,它们只会改变输出并返回过滤后的数据。过滤器在很多不同的情况下都很有用,比如保持API响应尽可能干净,以及在前端操纵数据格式。在您希望通过将所有逻辑封装在可重用代码块后面来避免重复和链接的情况下,它们也非常有效。定义和使用过滤器在Vue中,我们可以通过两种不同的方式注册过滤器:全局和本地。前一种方法可以访问所有组件中的过滤器,而后者只能使用定义组件的组件内部的过滤器。过滤器是简单的JS函数,它将要转换的值作为第一个参数,但也可以传入尽可能多的其他参数,因为它们希望返回该值的格式化版本。全局过滤器全局过滤器看起来像这样://在这个例子中,我们将注册一个全局过滤器以在价格前加上美元符号://DeclareVue.filter('toUSD',function(value)){return`$${value}`}//使用{{351.99|toUSD}}

过滤器定义必须始终在主Vue实例之上,否则您将收到Failedtoresolvefilter:toUSD错误。//DECLARATIONVue.filter('toUSD',function(value){return`$${value}`;});newVue({el:'#app',data:{price:351.99}});//用法{{价格|toUSD}}
本地过滤器本地过滤器注册在Vue组件范围内,让我们看看如何创建它://在这个例子中,我们将创建一个过滤器以将字符串大写。//声明newVue({el:'#app',data:{name:'scotch.io'},filters:{//过滤器定义Upper(value){returnvalue.toUpperCase();}}});//用法{{名称|上}}
如上例所示,本地过滤器作为“过滤器”属性内部的函数存储在Vue组件中。我们可以注册任意多个:...filters:{Upper(value){returnvalue.toUpperCase();},Lower(value){returnvalue.toLowerCase();},}....附加参数设置如我们在本文介绍中提到的,过滤器可以根据需要接受任意多的参数//DeclarationVue.filter('readMore',function(text,length,suffix){returntext.substring(0,length)+suffix;});newVue({el:'#app',data:{text:'Loremipsumdolorsitamet,consecteturadipisicingelit.earumeligendisuscipitlaborumquod.'}});//用法{{text|readMore(10,'...')}}
在这个例子中,我们创建了一个名为“readMore”的过滤器,它将字符串的长度限制为给定的字符数,并添加它的一个选择后缀。Vue.js将值作为第一个参数文本传递给过滤器,将长度和后缀作为第二和第三个参数传递。链式过滤器关于过滤器,我最喜欢的事情之一是能够使用竖线(|)符号将它们链接起来,并通过转换器链运行单个值。再举一个价格的例子,我们要限制价格的小数位数和加价的单位。//JSVue.filter('toFixed',function(price,limit){returnprice.toFixed(limit);});Vue.filter('toUSD',function(price){return`$${price}`;});newVue({el:'#app',data:{price:435.333}});//HTML{{price|到固定(2)|toUSD}}Example接下来,我们用一些例子来巩固一下。将JS值转换为JSON字符串//JSVue.filter('json',function(value){returnJSON.stringify(value);});newVue({el:'#app',data:{user:{username:'johndoe',email:'john@example.com',countryCode:'U.K.'}}});//HTML{{user|json}}从对象数组中提取属性值列表Vue.filter('pluck',function(objects,key){returnobjects.map(function(object){returnobject[key];});});newVue({el:'#app',data:{users:[{"id":4,"first_name":"Eve","last_name":"Holt"},{"id":5,"first_name":"Charles","last_name":"Morris"},{"id":6,"first_name":"Tracey","last_name":"Ramos"}]}});//HTML{{用户|采摘('last_name')}}{{视频|at(1)}}返回给定列表中的最小值//JSVue.filter('min',function(values){returnMath.min(...values);});newVue({el:'#app',data:{ages:[23,19,45,12,32]}});//HTML{{ages|min}}元素的随机列表:Vue.filter('shuffle',function(values){for(vari=values.length-1;i>0;i--){varj=Math.floor(Math.random()*(i+1));vartemp=values[i];values[i]=values[j];values[j]=temp;}returnvalues;});newVue({el:'#app',data:{car??ds:['Lahire','Judith','Lancelot','Alexandre']}});//HTML{{卡片|随机播放}}返回数组的第一个元素:Vue.filter('first',function(values){if(Array.isArray(values)){returnvalues[0];}returnvalues;});newVue({el:'#app',data:{consoles:['PlayStation','NintendoDS','Xbox','Atari']}});//HTML{{控制台|first}}返回数组的最后一个元素Vue.filter('last',function(values){if(Array.isArray(values)){returnvalues[values.length-1];}返回值;});newVue({el:'#app',data:{控制台:['PlayStation','NintendoDS','Xbox','Atari']}});//HTML{{控制台|last}}返回过滤指定元素的数组副本Vue.filter('without',function(values,exclude){returnvalues.filter(function(element){return!exclude.includes(element);});});newVue({el:'#app',data:{unpaidInvoices:['#1001','#1002','#1003','#1004']}});//HTML<分区id="app">{{未付款发票|without('#1003')}}删除数组中重复的元素Vue.filter('unique',function(values,unique){returnvalues.filter(function(element,index,self){returnindex==self.indexOf(element);});});newVue({el:'#app',data:{recentViewedPosts:[13,43,23,13,43,3,98,42,65]}});//HTML{{最近查看的帖子|unique}}在字符串后添加文本Vue.filter('prepend',function(string,prepend){return`${string}${prepend}`;});newVue({el:'#app',data:{greeting:'Hello'}});//HTML{{greeting|prepend('World!')}}重复一个字符串n次Vue.filter('repeat',function(string,times){returnstring.repeat(times);});newVue({el:'#app',data:{greeting:'Hello'}});//HTML{{问候|重复(3)}}总结希望读者从这篇文章中学到了一些东西,现在知道如何创建和使用过滤器,最重要的是,您现在可以重构您的代码以使用过滤器清理代码后可能存在的错误无法实时获知部署情况。事后为了解决这些bug,花费了大量的时间在日志调试上。顺便推荐一个好用的bug监控工具,Fundebug。原文:https://scotch.io/tutorials/g...每周更新交流文章。可以微信搜索“大千世界”立即阅读更新(比博客早一两篇),这篇文章GitHubhttps://github.com/qq449245884/xiaozhi已经收录,还有我的很多文档已经整理好了。欢迎明星和完美。可以参考考点面试。另外关注公众号,后台回复福利就可以看到福利了。你知道。