基于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 相关文章推荐
文字幻灯片
Jun 26 Javascript
Javascript this指针
Jul 30 Javascript
纯js实现背景图片切换效果代码
Nov 14 Javascript
JavaScript的漂亮的代码片段
Jun 05 Javascript
用window.onerror捕获并上报Js错误的方法
Jan 27 Javascript
微信小程序 绘图之饼图实现
Oct 24 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
May 12 Javascript
vue如何在自定义组件中使用v-model
May 14 Javascript
JS内部事件机制之单线程原理
Jul 02 Javascript
Vuejs开发环境搭建及热更新【推荐】
Sep 07 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
vue实现的下拉框功能示例
Jan 29 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中通过smtp发邮件的类,测试通过
2007/01/22 PHP
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
2018/10/15 PHP
JS 文件传参及处理技巧分析
2010/05/13 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
详解vue使用插槽分发内容slot的用法
2019/03/28 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
python 实现逻辑回归
2020/12/30 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
计算机软件个人的自荐信范文
2013/12/01 职场文书
护士演讲稿范文
2014/01/05 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
银行奉献演讲稿
2014/09/16 职场文书
英语导游欢迎词
2015/09/30 职场文书
员工给公司的建议书
2019/06/24 职场文书
用Java实现简单计算器功能
2021/07/21 Java/Android