基于el-select封装:下拉远程搜索

<template>
  <el-select
    :value="value"
    filterable
    :title="value"
    :multiple="multipleflg"
    remote
    reserve-keyword
    :placeholder="placeholder"
    :remote-method="remotemethod"
    :loading="loadflg"
    :style="styles"
    :class="{ 'select-container': icon }"
    :popper-class="popperclass"
    collapse-tags
    @change="handleChange"
  >
    <template v-if="icon" slot="prefix">
      <span class="search-icon">
        <svg-icon icon-class="search" />
      </span>
    </template>
    <el-option
      v-for="item in options"
      :key="item.value || item.id"
      :label="item.label"
      :value="item.value || item.id"
    />
  </el-select>
</template>

<script>
export default {
  props: {
    value: {
      type: [String, Object, Array],
      default: '',
      required: true
    },
    popperclass: {
      type: String,
      default: ''
    },
    icon: {
      type: Boolean,
      default: false
    },
    placeholder: {
      type: String,
      default: '请输入关键词'
    },
    options: {
      type: Array,
      default() {
        return []
      }
    },
    loadflg: {
      type: Boolean,
      default: false
    },
    styles: {
      type: String,
      default: ''
    },
    remotemethod: {
      type: Function,
      default() {}
    },
    multipleflg: {
      type: Boolean,
      default: false
    }
  },
  emit: ['on-change'],
  data() {
    return {}
  },
  mounted() {},
  methods: {
    handleChange(value) {
      this.$emit('input', value)
      this.$emit('on-change', value)
    }
  }
}
</script>
<style lang="scss">
// 父组件传入popperclass参数使用这个类
.width156{
  width: 156Px;
}
</style>
<style lang="scss" scoped>
.select-container {
  ::v-deep .el-input--suffix .el-input__inner {
    padding-left: 15Px;
  }
  .search-icon {
    line-height: 36Px;
    font-size: 16Px;
    position: relative;
    left: 127Px;
  }
}
::v-deep .el-select-dropdown__item.hover, .el-select-dropdown__item:hover{
  color: #FF4400 !important;
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值