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 相关文章推荐
jquery多浏览器捕捉回车事件代码
Jun 22 Javascript
一个js拖拽的效果类和dom-drag.js浅析
Jul 17 Javascript
关于JAVASCRIPT urldecode URL解码的问题
Jan 08 Javascript
GRID拖拽行的实例代码
Jul 18 Javascript
javaScript面向对象继承方法经典实现
Aug 20 Javascript
javascript生成json数据简单示例分享
Feb 14 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
关于iframe跨域POST提交的方法示例
Jan 15 Javascript
vue + socket.io实现一个简易聊天室示例代码
Mar 06 Javascript
Webpack实现按需打包Lodash的几种方法详解
May 08 Javascript
jQuery选择器之属性过滤选择器详解
Sep 28 jQuery
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
Feb 10 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 实例化类的一点摘记
2008/03/23 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
学习面向对象之面向对象的术语
2010/11/30 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
浅析vue深复制
2018/01/29 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
Python函数参数操作详解
2018/08/03 Python
python实现弹窗祝福效果
2019/04/07 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
英国第一独立滑雪板商店:The Snowboard Asylum
2020/01/16 全球购物
物业管理专业个人的自我评价
2013/11/19 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
应急处置方案
2014/06/16 职场文书
服务标语口号
2014/07/01 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
北京导游词
2015/02/12 职场文书
红歌会主持词
2015/07/02 职场文书