vue实现条件叠加搜索的解决方法


Posted in Javascript onMay 28, 2019

案例场景:

现在有个文章管理模块,在该模块中有栏目选择、文章搜索、分页功能。这些功能改变其中一个都会对查询的文章有所改变。案例图如下:

vue实现条件叠加搜索的解决方法

实现方案有两种:

其一、我们开始可能会想到对每个功能绑定一个处理事件,但是这样做我们对数据的维护工作将大大加大,而且用这样方案做数据的叠加筛选不是很好。

方案二、我们将所有提交的数据放到一起维护然后再进行深度监听,当某一个值、或多个值的改变时,在去进行数据的查询,此时问题也变得更易于理解与维护,具体实现如下:

分页代码如下:

<template>
 <el-pagination
  background
  :page-size="params.pageSize"
  @current-change="handlePaginationChange"
  layout="prev, pager, next"
  :total="total">
 </el-pagination>
</template>

下拉选择框、搜索框代码如下: 

<template>
//下拉选择框
<el-select v-model="params.categoryId" placeholder="请选择栏目" size='mini'
 v-loading="loadingCategory">
 <el-option :key='c.id' v-for='c in categories' :label="c.name" :value="c.id"></el-option>
</el-select>
 
//搜索框
<el-input placeholder="请输入关键字"
 prefix-icon="el-icon-search"
 v-model="params.keywords"
  clearable>
</el-input>
</template>

数据维护、与方法(事件处理)

export default{
 data(){
  return{
   ... //其它的数据省略
 
   params:{ //存储分页、搜索数据
   page:0,
   pageSize:3,
   categoryId:undefined,
   keywords:undefined
   }
  }
 },
 watch:{
 params:{
  handler(val){
   this.findArticle(); //查找文章
  },
  deep:true //深度监听
 },
 methods:{
  //处理分页
  handlePaginationChange(page){
   this.params.page=page-1;
  }, 
  //查询文章
  findArticle(){
   axios.get('',{params:this.params})
   .then(()=>{})
   .catch(()=>{})
  }
 }
 
}

小结:通过上面的双向数据绑定、我们将所有数据放到 params中集中管理(进行数据的监听)、当数据发生改变时我们去请求数据,来局部更新表格中的数据。

存在问题与解决:

1.这种实现方法的实现是基于所有数据的和查询、如果我们的需求是,当每次选择栏目时,都要显示第一页栏目的文章;

解决方案:

一、此时我们可以给选择的栏目加change事件、然后将page重置为第一页(本项目是从第0页开始),具体代码如下:

1.1 将分页中动态绑定page  即:  :current-page="(params.page+1)"

<template>
 <el-pagination
  background
  :page-size="params.pageSize"
  :total="total"
  layout="prev, pager, next"
  :current-page="(params.page+1)" //将页数进行动态绑定这样利于我们操作页数的改变
  @current-change="handlePaginationChange"
  >
 </el-pagination>
 
</template>

1.2  给select添加change事件

<template> 
 //下拉选择框
 <el-select v-model="params.categoryId" placeholder="请选择栏目" size='mini'
   @change="selectChange"
  >
  <el-option :key='c.id' v-for='c in categories' :label="c.name" :value="c.id">
  </el-option>
 </el-select>
</template>
 
export default{
 //重置page为0
 selectChange(){
  this.params.page=0;
 },
}

***:此时我们存在的问题是如果我们先点击某一页后然后再点击栏目,那么会基于本页去查询选择栏目的信息。

二、关于搜索时我的理想是对当前页信息进行筛选、如果有人想要做出对所有数据的筛选、那么此时我们应该将keywords单独拿出来进行,搜索这样解决起来比加条件简单许多。

只是我目前对多个信息筛选做出的一个解决方案、如果有更加友好的处理方法、希望能留言。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
List the UTC Time on a Computer
Jun 11 Javascript
IE的fireEvent方法概述及应用
Feb 22 Javascript
js给dropdownlist添加选项的小例子
Mar 04 Javascript
jQuery实现表格行上移下移和置顶的方法
May 22 Javascript
AngularJS HTML DOM详解及示例代码
Aug 17 Javascript
浅述Javascript的外部对象
Dec 07 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
Feb 05 Javascript
ES6新特性之变量和字符串用法示例
Apr 01 Javascript
JS实现的DOM插入节点操作示例
Apr 04 Javascript
详解jQuery如何实现模糊搜索
May 10 jQuery
vue中uni-app 实现小程序登录注册功能
Oct 12 Javascript
vue项目查看vue版本及cli版本的实现方式
Oct 24 Javascript
webpack4 从零学习常用配置(小结)
May 28 #Javascript
详解ES6 export default 和 import语句中的解构赋值
May 28 #Javascript
jQuery实现高级检索功能
May 28 #jQuery
利用原生JS实现data方法示例代码
May 28 #Javascript
php结合js实现多条件组合查询
May 28 #Javascript
vue实现前台列表数据过滤搜索、分页效果
May 28 #Javascript
js 将线性数据转为树形的示例代码
May 28 #Javascript
You might like
php命名空间学习详解
2014/02/27 PHP
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
JavaScript中this详解
2015/09/01 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
微信小程序实现九宫格抽奖
2020/04/15 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
python实现逻辑回归的方法示例
2017/05/02 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
Python常见数据类型转换操作示例
2019/05/08 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
python的slice notation的特殊用法详解
2019/12/27 Python
基本款天堂:Everlane
2017/05/13 全球购物
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
杭州联环马网络笔试题面试题
2013/08/04 面试题
护士实习生自我鉴定范文
2013/12/10 职场文书
村官学习十八大感想
2014/01/15 职场文书
关于打架的检讨书
2014/01/17 职场文书
物业总经理岗位职责
2014/02/28 职场文书
政府绩效管理实施方案
2014/05/04 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
教师个人事迹材料
2014/12/17 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
诉讼和解协议书
2016/03/23 职场文书
古诗之感恩老师
2019/10/24 职场文书
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
Python3.10的一些新特性原理分析
2021/09/15 Python
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android