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 26 Javascript
JavaScript对象的property属性详解
Apr 01 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
JS继承用法实例分析
Feb 05 Javascript
html判断当前页面是否在iframe中的实例
Nov 30 Javascript
性能优化之代码优化页面加载速度
Mar 01 Javascript
jQuery手风琴的简单制作
May 12 jQuery
解决vue 中 echart 在子组件中只显示一次的问题
Aug 07 Javascript
微信小程序登录态和检验注册过没的app.js写法
May 22 Javascript
详解vue v-model
Aug 31 Javascript
一起来了解一下JavaScript的预编译(小结)
Mar 01 Javascript
canvas绘制折线路径动画实现
May 12 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
PHP.MVC的模板标签系统(一)
2006/09/05 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
php实现源代码加密的方法
2015/07/11 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
js获取单选按钮的数据
2006/11/27 Javascript
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
Javascript-Mozilla和IE中的一个函数直接量的问题分析
2007/08/12 Javascript
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
JQquery的一些使用心得分享
2012/08/01 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
Angular2.js实现表单验证详解
2017/06/23 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
node.js基础知识小结
2018/02/26 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
python正则表达式中的括号匹配问题
2014/12/14 Python
python optparse模块使用实例
2015/04/09 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
python实现超市商品销售管理系统
2019/10/25 Python
python创建学生成绩管理系统
2019/11/22 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
会展中心部门工作职责
2013/11/27 职场文书
效能监察建议书
2014/05/19 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python