全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Vue.js学习之过滤器详解

前言

在这个教程中,我们将会通过几个例子,了解和学习VueJs的过滤器。阅读这这篇文中的前提是你对Vue已经有了基本的语法基础。

Vue.Js中的过滤器基础

过滤器是一个通过输入数据,能够及时对数据进行处理并返回一个数据结果的简单函数。Vue有很多很便利的过滤器,可以参考官方文档, http://cn.vuejs.org/api/#过滤器 ,过滤器通常会使用管道标志 “ | ”, 比如:

{{ msg | capitalize }}
// 'abc' => 'ABC'

uppercase过滤器 : 将输入的字符串转换成大写字母的过滤器。

VueJs允许你链式调用过滤器,简单的来说,就是一个过滤器的输出成为下一个过滤器的输入,然后再次过滤。接下来,我们可以想象一个比较简单的例子,使用了Vue的 filterBy + orderBy 过滤器来过滤所有商品products。过滤出来的产品是属于水果类商品。

filterBy过滤器 : 过滤器的值必须是一个数组,filterBy + 过滤条件。过滤条件是:'string || function'+ in 'optionKeyName'

orderBy过滤器 : 过滤器的值必须是一个数组,orderBy + 过滤条件。过滤条件是:'string || array ||function' + 'order ≥ 0 为升序 || order < 0 为降序'

接下来,我们可以看下下面这个例子:我们有一个商品数组products,我们希望遍历这个数组,并把他们打印成一张清单,这个用v-for很容易实现。

<ul class="product">
 <li v-for="product in products|filterBy '水果' in 'category' |orderBy 'price' 1">
 {{product.name}}-{{product.price | currency}}
 </li>
</ul>

上面的例子,就是用filterBy 过滤在 'category'中含有'水果' 关键字的列表,返回的列表就是只含有 '水果' 关键字的列表,而orderBy过滤器是根据价格做了一个升序,如果想要降序,只需要加一个小于0的参数;

自定义过滤器

虽然VueJs给我们提供了很多强有力的过滤器,但有时候还是不够。值得庆幸的,Vue给我们提供了一个干净简洁的方式来定义我们自己的过滤器,之后我们就可以利用管道 “ | ” 来完成过滤。

定义一个全局的自定义过滤器,需要使用Vue.filter()构造器。这个构造器需要两个参数。

Vue.filter() Constructor Parameters:

      1.filterId: 过滤器ID,用来做为你的过滤器的唯一标识;

      2.filter function: 过滤器函数,用一个function来接收一个参数,之后再将接收到的参数格式化为想要的数据结果。

上面的例子中,我们要实现商品价格打5折该怎么做呢?其实就是实现的一个自定义的过滤器,表示将商品的价格打了5折;而要实现它,需要完成的是:

      a、使用Vue.filter()构造器创建一个过滤器叫做discount

      b、输入商品的原价,能够返回其打五折之后的折扣价

代码见下面:

Vue.filter('discount', function(value) {
 return value * .5;
});
var product = new Vue({
 el: '.product',
 data: {
 products: [
  {name: '苹果',price: 25,category: "水果"}, 
  {name: '香蕉',price: 15,category: "水果"}, 
  {name: '雪梨',price: 65,category: "水果"}, 
  {name: '宝马',price: 2500,category: "汽车"},
  {name: '奔驰',price: 10025,category: "汽车"}, 
  {name: '柑橘',price: 15,category: "水果"}, 
  {name: '奥迪',price: 25,category: "汽车"}
 ]
 },
})

现在就可以像使用Vue自带的过滤器一样使用自定义过滤器了

<ul class="product">
 <li v-for="product in products|filterBy '水果' in 'category' |orderBy 'price' 0">
 {{product.name}}-{{product.price|discount | currency}}
 </li>
</ul>

上面代码实现的商品打5折,而如果要实现价格打任意折扣呢?应该在discount过滤器里增加一个折扣数值参数,改造一下我们的过滤器。

Vue.filter('discount', function(value, discount) {
 return value * (discount / 100);
});

然后重新调用我们的过滤器

<ul class="product">
 <li v-for="product in products|filterBy '水果' in 'category' |orderBy 'price' 0">
 {{product.name}}-{{product.price|discount 25 | currency}}
 </li>
</ul>

我们也可以在我们Vue实例里构造我们的过滤器,这样构造的好处是,这样就不会影响到其他不需要用到这个过滤器的Vue实例。

/*定义在全局 
Vue.filter('discount', function(value,discount) {
 return value * ( discount / 100 ) ;
});
*/
var product = new Vue({
 el: '.product',
 data: {
 products: [
  {name: '苹果',price: 25,category: "水果"}, 
  {name: '香蕉',price: 15,category: "水果"}, 
  {name: '雪梨',price: 65,category: "水果"}, 
  {name: '宝马',price: 2500,category: "汽车"},
  {name: '奔驰',price: 10025,category: "汽车"}, 
  {name: '柑橘',price: 15,category: "水果"}, 
  {name: '奥迪',price: 25,category: "汽车"}
 ]
 },
 //自定义在实例
 filters: {
 discount: function(value, discount) {
  return value * (discount / 100);
 }
 }
})

定义在全局就能在所有的实例中调用过滤器,如果定义在了实例里就在实例里调用过滤器。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用vue能带来一定的帮助,如果有疑问大家可以留言交流。


# vue.js  # 自定义过滤器  # vue.js的过滤器  # 2.0  # 过滤器  # vue.js过滤器+ajax实现事件监听及后台php数据交互实例  # vue.js中过滤器的使用教程  # Vue.js -- 过滤器使用总结  # Vue.js每天必学之过滤器与自定义过滤器  # Vue.js 的过滤器你了解多少  # 自定义  # 是一个  # 奥迪  # 升序  # 给我们  # 我们可以  # 链式  # 就可以  # 自己的  # 的是  # 几个  # 降序  # 就在  # 在这个  # 将会  # 有很多  # 不需要  # 遍历  # 打了  # 很容易 


相关文章: 如何快速生成专业多端适配建站电话?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  制作网站公司那家好,网络公司是做什么的?  如何选择高效便捷的WAP商城建站系统?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  ,购物网站怎么盈利呢?  南京网站制作费用,南京远驱官方网站?  如何用5美元大硬盘VPS安全高效搭建个人网站?  nginx修改上传文件大小限制的方法  学校免费自助建站系统:智能生成+拖拽设计+多端适配  哈尔滨网站建设策划,哈尔滨电工证查询网站?  湖北网站制作公司有哪些,湖北清能集团官网?  如何选择高性价比服务器搭建个人网站?  太平洋网站制作公司,网络用语太平洋是什么意思?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  浅谈Javascript中的Label语句  建站之星Pro快速搭建教程:模板选择与功能配置指南  网站制作服务平台,有什么网站可以发布本地服务信息?  全景视频制作网站有哪些,全景图怎么做成网页?  电商网站制作公司有哪些,1688网是什么意思?  广州营销型建站服务商推荐:技术优势与SEO优化解析  表情包在线制作网站免费,表情包怎么弄?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  实例解析Array和String方法  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  定制建站如何定义?其核心优势是什么?  南平网站制作公司,2025年南平市事业单位报名时间?  如何续费美橙建站之星域名及服务?  如何通过多用户协作模板快速搭建高效企业网站?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  大学网站设计制作软件有哪些,如何将网站制作成自己app?  如何快速重置建站主机并恢复默认配置?  代刷网站制作软件,别人代刷火车票靠谱吗?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  建站之星备案流程有哪些注意事项?  长沙做网站要多少钱,长沙国安网络怎么样?  建站之星安装步骤有哪些常见问题?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  如何快速建站并高效导出源代码?  微信小程序 input输入框控件详解及实例(多种示例)  广州美橙建站如何快速搭建多端合一网站?  建站之星在线版空间:自助建站+智能模板一键生成方案  如何选择建站程序?包含哪些必备功能与类型?  如何快速辨别茅台真假?关键步骤解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。