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 相关文章推荐
js+FSO遍历文件夹下文件并显示
Mar 07 Javascript
使用javascript创建快捷方式的简单实例
Aug 09 Javascript
js实现在字符串中提取数字
Nov 05 Javascript
javascript计时器事件使用详解
Jan 07 Javascript
Node.js和PHP根据ip获取地理位置的方法
Mar 14 Javascript
JavaScript实现拖拽网页内元素的方法
Apr 15 Javascript
js判断手机号是否正确并返回的实现代码
Jan 17 Javascript
JavaScript实现网页头部进度条刷新
Apr 16 Javascript
jQuery日期范围选择器附源码下载
May 23 jQuery
详解Node项目部署到云服务器上
Jul 12 Javascript
js实现可以点击收缩或张开的悬浮窗
Sep 18 Javascript
VUE 组件转换为微信小程序组件的方法
Nov 06 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
在vs2010中调试javascript代码方法
2011/02/11 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
javascript常用的设计模式
2017/02/09 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
js仿360开机效果
2019/12/26 Javascript
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python音频处理用到的操作的示例代码
2017/10/27 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
python删除某个目录文件夹的方法
2020/05/26 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
商务英语毕业生自荐信范文
2013/11/08 职场文书
七年级地理教学反思
2014/01/26 职场文书
班长演讲稿范文
2014/04/24 职场文书
就职演讲稿范文
2014/05/19 职场文书
机关职员工作检讨书
2014/10/23 职场文书
电工实训报告总结
2014/11/05 职场文书
志愿服务心得体会
2016/01/15 职场文书
vue实现登陆页面开发实践
2022/05/30 Vue.js