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 强制刷新页面的实现代码
Dec 13 Javascript
JavaScript输入邮箱自动提示实例代码
Jan 13 Javascript
jquery操作 iframe的方法
Dec 03 Javascript
异步JavaScript编程中的Promise使用方法
Jul 28 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
BackBone及其实例探究_动力节点Java学院整理
Jul 14 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
Sep 29 Javascript
详解微信小程序图片地扯转base64解决方案
Aug 18 Javascript
vue实现标签云效果的方法详解
Aug 28 Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 Javascript
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
简单了解JavaScript弹窗实现代码
May 07 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
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
设定php简写功能的方法
2019/11/28 PHP
JavaScript小技巧 2.5 则
2010/09/12 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
js格式化时间小结
2014/11/03 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
Python中title()方法的使用简介
2015/05/20 Python
深入解析Python中的__builtins__内建对象
2016/06/21 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
如何在python中实现线性回归
2020/08/10 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
医学检验专业大学生求职信
2013/11/18 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
员工规章制度范本
2015/08/07 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL
MySQL分布式恢复进阶
2022/07/23 MySQL