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和CSS速查手册
Aug 20 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
Nov 07 Javascript
js设置function参数默认值(适合没有传参情况)
Feb 24 Javascript
ES6中如何使用Set和WeakSet
Mar 10 Javascript
浅谈js基本数据类型和typeof
Aug 09 Javascript
Jquery调用iframe父页面中的元素及方法
Aug 23 Javascript
angularjs 表单密码验证自定义指令实现代码
Oct 27 Javascript
Vue实现百度下拉提示搜索功能
Jun 21 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
Oct 19 Javascript
vue+SSM实现验证码功能
Dec 07 Javascript
JavaScript对象字面量和构造函数原理与用法详解
Apr 18 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
Jun 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
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
js实现微信聊天效果
2020/08/09 Javascript
Python实现字符串格式化的方法小结
2017/02/20 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
Python3标准库总结
2019/02/19 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
如何清空Session
2015/02/23 面试题
一道Delphi上机题
2012/06/04 面试题
在校生钳工实习自我鉴定
2013/09/19 职场文书
社区端午节活动方案
2014/01/28 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
投资意向书范本
2014/04/01 职场文书
超市商业计划书
2014/05/04 职场文书
高三霸气励志标语
2014/06/24 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
董事会决议范本
2015/07/01 职场文书
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript