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 相关文章推荐
Exjs 入门篇
Apr 07 Javascript
人人网javascript面试题 可以提前实现下
Jan 05 Javascript
jqplot通过ajax动态画折线图的方法及思路
Dec 08 Javascript
jquery 合并内容相同的单元格(示例代码)
Dec 13 Javascript
JavaScript、jQuery与Ajax的关系
Jan 24 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
js显示动态时间的方法详解
Aug 20 Javascript
vue+axios新手实践实现登陆的示例代码
Jun 06 Javascript
vue实现双向绑定和依赖收集遇到的坑
Nov 29 Javascript
iview的table组件自带的过滤器实现
Jul 12 Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 Javascript
微信小程序实现分页加载效果
Nov 19 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
GD输出汉字的函数的分析
2006/10/09 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
2016/07/18 Javascript
Node.js简单入门前传
2017/08/21 Javascript
json数据格式常见操作示例
2019/06/13 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
Python实现GIF图倒放
2020/07/16 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
历史专业毕业生的自我鉴定
2013/11/15 职场文书
环境工程专业个人求职信
2013/12/05 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
保护环境建议书100字
2014/05/13 职场文书
林肯就职演讲稿
2014/05/19 职场文书
小学教师培训方案
2014/06/09 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
公司表扬信格式
2015/05/04 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
pytorch Dropout过拟合的操作
2021/05/27 Python
HTML基本元素标签介绍
2022/02/28 HTML / CSS
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android