Vue2.x通用条件搜索组件的封装及应用详解


Posted in Javascript onMay 28, 2019

本文实例为大家分享了Vue2.x通用条件搜索组件的封装及应用,供大家参考,具体内容如下

效果

 Vue2.x通用条件搜索组件的封装及应用详解

组件源码

<template>
 <div class="search">
 <el-select v-model="type" @change="changeType" class="select">
  <el-option
  v-for="item in selectItems"
  :key="item.value"
  :lable="item.label"
  :value="item.value">
  </el-option>
 </el-select>
 <div class='search-input'>
  <el-input :placeholder="placeholderDes" v-model="searchValue"></el-input>
 </div>
 <el-button icon="el-icon-search" @click="search"></el-button>
 </div>
</template>

<script>
export default {
 data () {
 return {
  searchValue: '',
  type: ''
 }
 },
 created () {
 this.type = this.initType
 },
 props: {
 selectItems: {
  type: Array,
  require: true
 },
 placeholderDes: {
  type: String,
  require: true
 },
 initType: {
  type: String,
  require: true
 }
 },
 methods: {
 changeType (newType) {
  this.$emit('changeType', newType)
 },
 search () {
  this.$emit('searchOk', this.searchValue)
 }
 }
}
</script>

<style lang="less" scoped>
.search {
 display: flex;
 .el-select {
 width: 90px;
 height: 40px;
 box-sizing: border-box;
 border-right: none;
 border-radius: 0;
 background-color: #DDF0FE;
 border: 1px solid #40b0ff;
 }
 .search-input {
 width: 216px;
 height: 40px;
 border: 1px solid #40b0ff;
 border-left: none;
 box-sizing: border-box;
 font-family: 'MicrosoftYaHei';
 font-size: 14px;
 color: #909399;
 border-radius: 0;
 }
 .el-button {
 width: 44px;
 height: 40px;
 padding: 0;
 border: 1px solid #40b0ff;
 border-radius: 0;
 color: #fff;
 background: #40b0ff;
 &:hover {
  background: #10b0ff
 }
 }
}
</style>

父组件中的引用

<template>
 <div class="test">
 <v-search :initType="initType" :selectItems="selectItems" :placeholderDes="placeholderDes" @changeType="changeType" @searchOk="searchOk"></v-search>
 </div>
</template>

<script>
import VSearch from '@/components/Common/ZLGComponents/XGQTest/Search/Search'
export default {
 data () {
 return {
  selectItems: [],
  selectStatus: 'devname',
  initType: '',
  placeholderDes: '请输入要搜索的测试名称'
 }
 },
 created () {
 this.setSelectItems()
 this.setInitType()
 },
 methods: {
 setSelectItems () {
  this.selectItems = [{
  value: '测试名',
  label: '测试名'
  }, {
  value: '测试ID',
  label: '测试ID'
  }]
 },
 changeType (newType) {
  if (newType === '测试名') {
  this.placeholderDes = '请输入要搜索的测试名称'
  this.selectStatus = 'name'
  } else if (newType === '测试ID') {
  this.placeholderDes = '请输入要搜索的测试ID'
  this.selectStatus = 'id'
  }
 },
 searchOk (value) {
  console.log(this.selectStatus)
  console.log(value)
  // 调用你的搜索接口,搜索条件为搜索的类型 + 搜索值
  // yourSearch (this.selectStatus, value)
 },
 setInitType () {
  this.initType = '测试名'
 }
 },
 components: {
 VSearch
 }
}
</script>

<style lang="less" scoped>
</style>

组件基于element-UI的二次封装,适合用于使用element的项目,子组件父组件demo完整源码如上所示,有疑问建议研究一下源码,也欢迎留言交流。

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

Javascript 相关文章推荐
异步javascript的原理和实现技巧介绍
Nov 08 Javascript
深入理解jQuery中live与bind方法的区别
Dec 18 Javascript
JQuery实现绚丽的横向下拉菜单
Dec 19 Javascript
node.js中的fs.readFileSync方法使用说明
Dec 15 Javascript
javascript文本框内输入文字倒计数的方法
Feb 24 Javascript
Javascript实现可旋转的圆圈实例代码
Aug 04 Javascript
jQuery下拉美化搜索表单效果代码分享
Aug 25 Javascript
javascript实现动态标签云
Oct 16 Javascript
在 Express 中使用模板引擎
Dec 10 Javascript
VueJs使用Amaze ui调整列表和内容页面
Nov 30 Javascript
详解vuex之store源码简单解析
Jun 13 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
Aug 27 Javascript
jquery操作select常见方法大全【7种情况】
May 28 #jQuery
vue实现条件叠加搜索的解决方法
May 28 #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
You might like
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
php旋转图片90度的方法
2013/11/07 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
javascript 写类方式之九
2009/07/05 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
[45:15]Optic vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
pygame学习笔记(4):声音控制
2015/04/15 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
如何查找网页漏洞
2016/06/22 面试题
模具数控专业自荐信
2014/01/27 职场文书
英文请假条
2014/04/11 职场文书
先进事迹演讲稿
2014/09/01 职场文书
应届毕业生自荐信
2015/03/04 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
小学语文国培研修日志
2015/11/13 职场文书
导游词之昭君岛
2020/01/17 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python