全网整合营销服务商

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

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

Vue.js -- 过滤器使用总结

过滤器是一个通过输入数据,能够及时对数据进行处理并返回一个数据结果的简单函数。Vue有很多很便利的过滤器,过滤器通常会使用管道标志 “ | ”, 比如:

{{ 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.js  # 自定义过滤器  # 2.0  # 过滤器  # vue.js过滤器+ajax实现事件监听及后台php数据交互实例  # vue.js中过滤器的使用教程  # Vue.js学习之过滤器详解  # Vue.js每天必学之过滤器与自定义过滤器  # Vue.js 的过滤器你了解多少  # 自定义  # 是一个  # 奥迪  # 升序  # 给我们  # 我们可以  # 链式  # 就可以  # 自己的  # 的是  # 降序  # 就在  # 不需要  # 有很多  # 遍历  # 打了  # 很容易  # 能在  # 只需要  # 怎么做 


相关文章: 建站VPS配置与SEO优化指南:关键词排名提升策略  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  高防服务器租用首荐平台,企业级优惠套餐快速部署  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何通过FTP服务器快速搭建网站?  企业微网站怎么做,公司网站和公众号有什么区别?  如何快速生成高效建站系统源代码?  网站图片在线制作软件,怎么在图片上做链接?  如何在IIS服务器上快速部署高效网站?  如何通过云梦建站系统实现SEO快速优化?  如何在IIS中配置站点IP、端口及主机头?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何零基础开发自助建站系统?完整教程解析  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  建站为何优先选择香港服务器?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何使用Golang安装API文档生成工具_快速生成接口文档  h5在线制作网站电脑版下载,h5网页制作软件?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  如何基于云服务器快速搭建网站及云盘系统?  北京专业网站制作设计师招聘,北京白云观官方网站?  浅析上传头像示例及其注意事项  如何在景安云服务器上绑定域名并配置虚拟主机?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何通过万网虚拟主机快速搭建网站?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  javascript中的try catch异常捕获机制用法分析  如何快速生成橙子建站落地页链接?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  太平洋网站制作公司,网络用语太平洋是什么意思?  利用JavaScript实现拖拽改变元素大小  北京企业网站设计制作公司,北京铁路集团官方网站?  表情包在线制作网站免费,表情包怎么弄?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  全景视频制作网站有哪些,全景图怎么做成网页?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  ,购物网站怎么盈利呢?  如何在万网ECS上快速搭建专属网站?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  教学网站制作软件,学习*后期制作的网站有哪些?  如何通过远程VPS快速搭建个人网站?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  如何用已有域名快速搭建网站?  如何在橙子建站上传落地页?操作指南详解  建站之星会员如何解锁更多建站功能?  建站主机选购指南与交易推荐:核心配置解析  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  如何有效防御Web建站篡改攻击? 

您的项目需求

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