过滤器是一个通过输入数据,能够及时对数据进行处理并返回一个数据结果的简单函数。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 的过滤器你了解多少
# 自定义
# 是一个
# 奥迪
# 升序
# 给我们
# 我们可以
# 链式
# 就可以
# 自己的
# 的是
# 降序
# 就在
# 不需要
# 有很多
# 遍历
# 打了
# 很容易
# 能在
# 只需要
# 怎么做
相关文章:
东莞专业制作网站的公司,东莞大学生网的网址是什么?
如何快速搭建高效香港服务器网站?
如何选择服务器才能高效搭建专属网站?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
香港服务器建站指南:免备案优势与SEO优化技巧全解析
企业微网站怎么做,公司网站和公众号有什么区别?
如何快速配置高效服务器建站软件?
如何用花生壳三步快速搭建专属网站?
如何在万网开始建站?分步指南解析
如何通过.red域名打造高辨识度品牌网站?
如何实现建站之星域名转发设置?
,想在网上投简历,哪几个网站比较好?
Android使用GridView实现日历的简单功能
建站之星下载版如何获取与安装?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
,在苏州找工作,上哪个网站比较好?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
浅析上传头像示例及其注意事项
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何选择高性价比服务器搭建个人网站?
如何在阿里云购买域名并搭建网站?
广州商城建站系统开发成本与周期如何控制?
西安大型网站制作公司,西安招聘网站最好的是哪个?
制作网站的模板软件,网站怎么建设?
外贸公司网站制作哪家好,maersk船公司官网?
如何将凡科建站内容保存为本地文件?
海南网站制作公司有哪些,海口网是哪家的?
如何选择高效响应式自助建站源码系统?
建站之星客服服务时间及联系方式如何?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何在云虚拟主机上快速搭建个人网站?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
北京制作网站的公司,北京铁路集团官方网站?
如何快速搭建安全的FTP站点?
如何用好域名打造高点击率的自主建站?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
装修招标网站设计制作流程,装修招标流程?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何在Golang中指定模块版本_使用go.mod控制版本号
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
*服务器网站为何频现安全漏洞?
香港服务器租用每月最低只需15元?
建站之星与建站宝盒如何选择最佳方案?
如何在橙子建站上传落地页?操作指南详解
建站之星如何一键生成手机站?
*请认真填写需求信息,我们会在24小时内与您取得联系。