2 个回答

直接使用原生title属性实现,通过绑定在el-select上,然后选择后拿到所有的label进行数组切割,得到字符然后赋值给title展示
下面我写了一个demo:

<template>
  <div>
    <el-select v-model="value2"
               multiple
               :title="labelStr"
               @change="computeLabel"
               collapse-tags
               style="margin-left: 20px;"
               placeholder="请选择">
      <el-option v-for="item in options"
                 :key="item.value"
                 :label="item.label"
                 :value="item.value">
      </el-option>
    </el-select>
  </div>
</template>

<script>

export default {
  data() {
    return {
      options: [{
        value: '选项1',
        label: '黄金糕'
      }, {
        value: '选项2',
        label: '双皮奶'
      }, {
        value: '选项3',
        label: '蚵仔煎'
      }, {
        value: '选项4',
        label: '龙须面'
      }, {
        value: '选项5',
        label: '北京烤鸭'
      }],
      value2: [],
      labelStr: ''
    }
  },
  methods: {
    computeLabel() {
      // 获取所有标签列表
      const labelList = []
      this.options.forEach(item => {
        if (this.value2.includes(item.value)) labelList.push(item.label)
      })
      this.labelStr = labelList.join(',')
    }
  }
}
</script>

效果:
image.png

看了一下 el-select 的API没有开放这个功能,也去看了对应组件的源码,并没有开放对应的 slot
所以建议是直接使用 el-popover 包裹 el-select 组件,使鼠标悬停在选择组件上时展示全部已选项。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏