基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)


Posted in Javascript onMay 07, 2019

基于Vue实现的多条件筛选功能(类似京东和淘宝功能),可以支持多选、清空、全选功能,数据源是通过JSon格式的数据封装而成。

实现的效果图:

基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)

代码实现如下:

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:'联想',
				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:'内存',
			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.3water.com:81/201905/yuanma/mutilQuery(3water.com).rar

以上所述是小编给大家介绍的Vue多条件筛选功能详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS target与currentTarget区别说明
Aug 28 Javascript
jQuery select表单提交省市区城市三级联动核心代码
Jun 09 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
Oct 14 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
Nov 02 Javascript
JS中dom0级事件和dom2级事件的区别介绍
May 05 Javascript
分享javascript、jquery实用代码段
Oct 20 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
Dec 19 Javascript
vue使用axios跨域请求数据问题详解
Oct 18 Javascript
vue iView 上传组件之手动上传功能
Mar 16 Javascript
js实现网页同时进行多个倒计时功能
Feb 25 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 jQuery
Node.js web 应用如何封装到Docker容器中
Sep 01 Javascript
详解vue中使用protobuf踩坑记
May 07 #Javascript
Node.js一行代码实现静态文件服务器的方法步骤
May 07 #Javascript
微信小程序扫描二维码获取信息实例详解
May 07 #Javascript
Vue数据绑定简析小结
May 07 #Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
May 07 #Javascript
详解Vue、element-ui、axios实现省市区三级联动
May 07 #Javascript
webpack结合express实现自动刷新的方法
May 07 #Javascript
You might like
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
Python多进程同步简单实现代码
2016/04/27 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
电子邮箱格式怎么写
2014/01/12 职场文书
人大调研汇报材料
2014/08/14 职场文书
政府四风问题整改措施
2014/10/04 职场文书
材料员岗位职责范本
2015/04/11 职场文书
运动员入场词
2015/07/18 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
pytorch 如何使用batch训练lstm网络
2021/05/28 Python
如何利用Python实现一个论文降重工具
2021/07/09 Python