使用 el-select 自定义选定的值

Posted

技术标签:

【中文标题】使用 el-select 自定义选定的值【英文标题】:Customize selected value with el-select 【发布时间】:2021-10-12 07:34:20 【问题描述】:

我需要在 el-select 组件中自定义选定的值,到目前为止,我只找到了有关自定义选项项的文档和示例,但没有找到选择后的值。 element-plus 可以做到这一点吗?如果是这样,请添加一个示例或为我指明正确的方向。

这些是使用插槽通过自定义 html 自定义的选项

这是选择后的外观,我需要使用自定义 html 来按选项显示

【问题讨论】:

【参考方案1】:

我为此创建了一个原型:

Source Code

<template>
  <el-select
    v-model="selected"
    value-key="price"
    :placeholder="selected ? '' : 'Please Select'"
    clearable
  >
    <el-option v-for="item in options" :value="item">
      <div class="option-grid">
        <div class="title"> item.title </div>
        <div class="desc"> item.desc </div>
        <div class="price"> item.price </div>
      </div>
    </el-option>

    <template v-if="selected" #prefix>
      <div class="option-grid prefix">
        <div class="title"> selected.title </div>
        <div class="desc"> selected.desc </div>
        <div class="price"> selected.price </div>
      </div>
    </template>
  </el-select>
</template>

<script setup>
  import  ref  from 'vue'

  const options = Array.from( length: 3 , (_, i) => 
    const n = i + 1

    return 
      title: `Title $n`,
      desc: `Description $n`,
      price: `Price $n`,
    
  )

  const selected = ref(null)
</script>

<style lang="scss">
  .el-select-dropdown__item 
    height: max-content;
  

  .option-grid 
    display: grid;
    grid-template-areas:
      'title price'
      'desc  price';
    line-height: 1.2;
    .title,
    .desc 
      font-size: 14px;
    
    .title,
    .price 
      font-weight: bold;
    
    .title 
      grid-area: title;
    
    .desc 
      grid-area: desc;
    
    .price 
      grid-area: price;
      justify-self: end;
      align-self: center;
    
    &.prefix 
      width: 196px;
      color: var(--el-text-color-regular);
      .title,
      .desc 
        justify-self: start;
        padding-left: 20px;
      
    
    &:not(.prefix) 
      .title 
        padding-top: 4px;
      
      .desc 
        padding-bottom: 4px;
      
    
  
</style>

【讨论】:

我需要自定义/添加 html 到所选选项。您的解决方案是在所选值更改后执行某些操作 @GeneralElectric 您能否举例说明您希望以哪种方式更改所选选项? 请检查我的编辑,我已包含图片 @GeneralElectric 不幸的是,我不认为这是可以实现的,因为所选选项没有专用插槽,最好的办法是在选项标签中包含详细信息。 @GeneralElectric 我重新阅读了文档,发现prefix 插槽可能适合这个,我已经更新了我的答案,请参见上文。

以上是关于使用 el-select 自定义选定的值的主要内容,如果未能解决你的问题,请参考以下文章

el-select change自定义参数

[element-ui] 多列表实现+自定义过滤 el-select

el-select 自定义过滤方法

从自定义数据源中获取选定的行?

2021-11-03 el-date-picker el-select获取输入框内显示的值

el-select绑定的设置是object