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 相关文章推荐
收集的一些Array及String原型对象的扩展实现代码
Dec 05 Javascript
javascript强大的日期函数代码分享
Sep 04 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
Sep 10 Javascript
Javascript判断图片尺寸大小实例分析
Jun 16 Javascript
JavaScript实现动态删除列表框值的方法
Aug 12 Javascript
jQuery实现的左右移动焦点图效果
Jan 14 Javascript
jquery树形菜单效果的简单实例
Jun 06 Javascript
基于JS代码实现导航条弹出式悬浮菜单
Jun 17 Javascript
jQuery实现的跨容器无缝拖动效果代码
Jun 21 Javascript
Javascript blur与click冲突解决办法
Jan 09 Javascript
js实现自定义进度条效果
Mar 15 Javascript
layer弹出层扩展主题的方法
Sep 11 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中图片等比缩放的实例
2013/03/24 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
Python中的CURL PycURL使用例子
2014/06/01 Python
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
python万年历实现代码 含运行结果
2017/05/20 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
详解Python核心对象类型字符串
2018/02/11 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
《广玉兰》教学反思
2014/04/14 职场文书
教师对学生的评语
2014/04/28 职场文书
简爱读书笔记
2015/06/26 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
Python异常类型以及处理方法汇总
2021/06/05 Python
Python 阶乘详解
2021/10/05 Python