基于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代码
Aug 22 Javascript
jQuery 获取和设置select下拉框的值实现代码
Nov 08 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
Mar 10 Javascript
JavaScript更改字符串的大小写
May 07 Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
Apr 05 Javascript
Angular2进阶之如何避免Dom误区
Apr 02 Javascript
彻底弄懂 JavaScript 执行机制
Oct 23 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
Dec 05 Javascript
JavaScript命名空间模式实例详解
Jun 20 Javascript
vue实现带过渡效果的下拉菜单功能
Feb 19 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
Aug 19 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
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
Python2与Python3的区别实例分析
2019/04/11 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
Python 求向量的余弦值操作
2021/03/04 Python
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
物业管理计划书
2014/01/10 职场文书
导游实习生自荐书
2014/01/28 职场文书
运动会入场词60字
2014/02/15 职场文书
文明城市标语
2014/06/16 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
2014年纪检工作总结
2014/11/12 职场文书
身份证丢失证明
2015/06/19 职场文书
感谢师恩主题班会
2015/08/17 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
javascript实现计算器功能详解流程
2021/11/01 Javascript