测试提了之后才发现,el-select居然不支持搜索高亮,自己封装一个简易的

<template>

  <el-select

    v-model="value"

    filterable

    placeholder="请选择"

    :filter-method="filterMethod"

    @change="valueChange"

    @visible-change="visibleChange"

  >

    <el-option

      v-for="item in optionsFilter"

      :key="item.value"

      :label="item.label"

      :value="item.value"

    >

      <span v-html="showData(item.label)">{{ item.label }}</span>

    </el-option>

  </el-select>

</template>

<script>

export default {

  props: {

    options: {

      type: Array,

      default: () => {

        return [];

      },

    },

  },

  data() {

    return {

      optionsFilter: [],

      filterValue: "",

      value: "",

    };

  },

  watch: {

    options() {

      this.optionsFilter = JSON.parse(JSON.stringify(this.options));

    },

  },

  methods: {

    visibleChange() {

      this.filterValue = "";

      this.optionsFilter = JSON.parse(JSON.stringify(this.options));

    },

    filterMethod(val) {

      this.filterValue = val;

      if (val) {

        this.optionsFilter = JSON.parse(JSON.stringify(this.options)).filter(

          (v) => {

            return v.label

              .toLowerCase()

              .includes(this.filterValue.toLowerCase());

          }

        );

      } else {

        this.optionsFilter = JSON.parse(JSON.stringify(this.options));

      }

    },

    showData(val) {

      return val.replace(

        new RegExp(this.filterValue, "g"),

        `<span style='color: #48a2ff'>${this.filterValue}</span>`

      );

    },

    valueChange() {

      this.$emit("changeValue", this.value);

    },

  },

};

</script>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值