You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue2.6+Vuetify2.3中如何在v-select的item-text拼接两个字段

在Vuetify 2.3的v-select中拼接多个字段作为item-text

针对你的需求,有三种常用实现方式,可根据场景选择:

方法1:直接使用item-text的函数形式(最简洁)

Vuetify 2.x的v-select支持item-text绑定函数,接收每个列表项作为参数,返回拼接后的文本。只需把原静态字符串绑定改为动态函数绑定:

<v-select
  :items="deplist"
  :item-text="item => `${item.moduleName}-${item.moduleNum}`"
  item-value="moduleId"
  v-model="selection"
></v-select>

注意要加冒号:item-text,表示绑定的是动态函数而非静态字符串。

方法2:提前处理数据源(适合复用场景)

如果拼接后的文本需要在多处使用,可在获取数据后给每个列表项新增一个拼接字段,比如displayText:

// 示例:在获取数据的方法中处理
fetchDeplist() {
  // 模拟从接口获取原始数据
  const rawData = [
    { moduleId: 1, moduleName: 'Mathematics', moduleNum: '108' },
    { moduleId: 2, moduleName: 'Physics', moduleNum: '203' }
  ];
  
  this.deplist = rawData.map(item => ({
    ...item,
    displayText: `${item.moduleName}-${item.moduleNum}`
  }));
}

之后在v-select中直接使用这个新字段:

<v-select
  :items="deplist"
  item-text="displayText"
  item-value="moduleId"
  v-model="selection"
></v-select>

方法3:使用自定义插槽(适合样式自定义场景)

如果需要给两个字段添加不同样式或复杂布局,可通过v-select的item和selection插槽完全自定义显示:

<v-select
  :items="deplist"
  item-value="moduleId"
  v-model="selection"
>
  <!-- 下拉列表中的选项样式 -->
  <template v-slot:item="{ item }">
    <span style="font-weight: 600;">{{ item.moduleName }}</span>
    <span style="margin: 0 8px;">-</span>
    <span>{{ item.moduleNum }}</span>
  </template>
  <!-- 选中后输入框内的显示样式 -->
  <template v-slot:selection="{ item }">
    <span>{{ item.moduleName }}-{{ item.moduleNum }}</span>
  </template>
</v-select>

内容的提问来源于stack exchange,提问作者Ariel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:20:15