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 相关文章推荐
Google Map Api和GOOGLE Search Api整合实现代码
Jul 18 Javascript
Javascript结合css实现网页换肤功能
Nov 02 Javascript
跨域表单提交状态的变相判断代码
Nov 12 Javascript
Javascript学习笔记-详解in运算符
Sep 13 Javascript
javascript每日必学之基础入门
Feb 16 Javascript
基于JS实现EOS隐藏错误提示层代码
Apr 25 Javascript
浅谈JavaScript的push(),pop(),concat()方法
Jun 03 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
Nov 18 Javascript
Vue.js上下滚动加载组件的实例代码
Jul 17 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
Jul 23 Javascript
详解微信小程序工程化探索之webpack实战
Apr 20 Javascript
javascript前端和后台进行数据交互方法示例
Aug 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
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
laravel框架分组控制器和分组路由实现方法示例
2020/01/25 PHP
input 高级限制级用法
2009/03/26 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
Javascript的各种节点操作实例演示代码
2012/06/27 Javascript
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
Python多线程爬虫简单示例
2016/03/04 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
html5唤起app的方法
2017/11/30 HTML / CSS
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
罗技美国官网:Logitech美国
2020/01/22 全球购物
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
讲座新闻稿
2015/07/18 职场文书