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 相关文章推荐
jquery ajax中使用jsonp的限制解决方法
Nov 22 Javascript
全面解析Bootstrap弹窗的实现方法
Dec 01 Javascript
js自定义QQ菜单效果
Jan 10 Javascript
微信小程序 图片加载(本地,网路)实例详解
Mar 10 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
Feb 06 Javascript
微信小程序3种位置API的使用方法详解
Aug 05 Javascript
使用ThinkJs搭建微信中控服务的实现方法
Aug 08 Javascript
关于Layui Table隐藏列问题
Sep 16 Javascript
vue开发简单上传图片功能
Jun 30 Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 Javascript
vue抽出组件并传值实例
Jul 31 Javascript
js实现电灯开关效果
Jan 19 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和XSL stylesheets转换XML文档
2006/10/09 PHP
如何利用php+mysql保存和输出文件
2006/10/09 PHP
文件上传的实现
2006/10/09 PHP
JS 分号引起的一段调试问题
2009/06/18 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
Python中的自定义函数学习笔记
2014/09/23 Python
python字符串对其居中显示的方法
2015/07/11 Python
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
Django内容增加富文本功能的实例
2017/10/17 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
Python Django基础二之URL路由系统
2019/07/18 Python
django实现支付宝支付实例讲解
2019/10/17 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
学校大课间活动方案
2014/01/30 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
2015年话务员工作总结
2015/04/29 职场文书
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL