基于Vue實(shí)現(xiàn)的多條件篩選功能的詳解(類似京東和淘寶功能)
基于Vue實(shí)現(xiàn)的多條件篩選功能(類似京東和淘寶功能),可以支持多選、清空、全選功能,數(shù)據(jù)源是通過(guò)JSon格式的數(shù)據(jù)封裝而成。
實(shí)現(xiàn)的效果圖:

代碼實(shí)現(xiàn)如下:
html:
<div id='app'>
<template v-if='condition.length'>
<div>
<span>已選中:<span>
<span v-for='(item,index) in condition' class='active'>{{item.name}} | </span>
</div>
</template>
<template v-if='category.length'>
<div class='nav' v-for='(items,index) in category'>
<div class='mutil-query-title' v-if='items.name' :key="items.id">{{items.name}}<span style='margin-left: 20px;' @click='allIn(index)'>全選</span>|<span @click='remove(index)'>清空</span></div>
<ol v-if='items.items.length'>
<li v-for='(item,key) in items.items'>
<span :class="{'active':item.active}" @click='handle(index,key)' :key='item.id'>{{item.name}}</span>
</li>
</ol>
</div>
</template>
</div>
js代碼如下:
var list={
category:[
{
name:'品牌',
items:[
{
name:'聯(lián)想',
active: false
},
{
name:'小米',
active: false
},
{
name:'蘋果',
active: false
},
{
name:'東芝',
active: false
}
]
},
{
name:'CPU',
items:[
{
name:'intel i7 8700K',
active: false
},
{
name:'intel i7 7700K',
active: false
},
{
name:'intel i9 9270K',
active: false
},
{
name:'intel i7 8700',
active: false
},
{
name:'AMD 1600X',
active: false
}
]
},
{
name:'內(nèi)存',
items:[
{
name:'七彩虹8G',
active: false
},
{
name:'七彩虹16G',
active: false
},
{
name:'金士頓8G',
active: false
},
{
name:'金士頓16G',
active: false
}
]
},
{
name:'顯卡',
items:[
{
name:'NVIDIA 1060 8G',
active: false
},
{
name:'NVIDIA 1080Ti 16G',
active: false
},
{
name:'NVIDIA 1080 8G',
active: false
},
{
name:'NVIDIA 1060Ti 16G',
active: false
}
]
}
],
condition:[
]
};
var count=0;
var app =new Vue({
el:'#app',
data:list,
methods:{
handle:function(index,key){
var item=this.category[index].items;
item.filter(function(v,i){
if(i==key){
v.active=true;
this.list.condition.filter(function(v2,i){
if(v.name==v2.name){
this.list.condition.splice(i,1);
count--;
}
});
Vue.set(this.list.condition,count++,v);
}
});
},
remove:function(index){
var item=this.category[index].items;
item.filter(function (v1,key) {
v1.active=false;
this.list.condition.filter(function(v2,i){
if(v1.name==v2.name){
this.list.condition.splice(i,1);
count--;
}
});
});
},
allIn:function(index){
var item=this.category[index].items;
item.filter(function (v,key) {
v.active=true;
this.list.condition.filter(function(v2,i){
if(v.name==v2.name){
this.list.condition.splice(i,1);
count--;
}
});
Vue.set(this.list.condition,count++,v);
});
}
}
});
源碼地址:http://xz.jb51.net:81/201905/yuanma/mutilQuery(jb51.net).rar
以上所述是小編給大家介紹的Vue多條件篩選功能詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Vue.js實(shí)現(xiàn)多條件篩選、搜索、排序及分頁(yè)的表格功能
- vue分類篩選filter方法簡(jiǎn)單實(shí)例
- vuejs實(shí)現(xiàn)本地?cái)?shù)據(jù)的篩選分頁(yè)功能思路詳解
- vue+elementUI實(shí)現(xiàn)表格關(guān)鍵字篩選高亮
- VUE實(shí)現(xiàn)移動(dòng)端列表篩選功能
- vue商城中商品“篩選器”功能的實(shí)現(xiàn)代碼
- vue實(shí)現(xiàn)前端列表多條件篩選
- vue+element table表格實(shí)現(xiàn)動(dòng)態(tài)列篩選的示例代碼
- vue3自定義動(dòng)態(tài)不同UI組件篩選框案例
相關(guān)文章
vue2.0 + element UI 中 el-table 數(shù)據(jù)導(dǎo)出Excel的方法
下面小編就為大家分享一篇vue2.0 + element UI 中 el-table 數(shù)據(jù)導(dǎo)出Excel的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03

