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

Vuetify中v-select不使用v-model如何获取item-value?

解决v-for循环中v-select获取选中item-value的问题

嘿,这个问题其实很好解决,我之前也遇到过类似的场景,给你两种实用的处理方法:

方法一:直接通过@change事件接收选中值和索引

@change事件本身会自动传递当前选中的item-value值(因为你设置了item-value="id")作为参数,你只需要在回调里同时接收索引和选中值就行:

修改你的模板代码:

<v-flex xl4 lg4 md4 sm6 xs12 class="pa-2" v-for="(question, i) in questions" :key="i">
  <v-select 
    :label="question.name" 
    :items="question.answers" 
    item-value="id" 
    item-text="name" 
    @change="(selectedId) => addAnswer(i, selectedId)" 
    required 
  ></v-select>
</v-flex>

然后在你的methods里处理这个方法:

methods: {
  addAnswer(index, selectedId) {
    // 这里的selectedId就是你要的选中项的id(item-value对应的值)
    console.log(`第${index+1}个问题选中的ID是:`, selectedId);
    // 接下来就可以根据索引和选中ID做你需要的业务逻辑啦
  }
}

方法二:用v-model绑定数组(更符合Vue响应式思想)

如果你需要实时获取所有问题的选中值,或者更倾向于Vue的双向绑定方式,可以声明一个数组来存储每个问题的选中结果:

首先在data里定义存储选中值的数组:

data() {
  return {
    questions: [], // 你的问题列表数组
    selectedAnswers: [] // 对应每个问题的选中ID,索引和questions一一对应
  }
}

然后修改模板,用v-model绑定到数组的对应索引:

<v-flex xl4 lg4 md4 sm6 xs12 class="pa-2" v-for="(question, i) in questions" :key="i">
  <v-select 
    :label="question.name" 
    :items="question.answers" 
    item-value="id" 
    item-text="name" 
    v-model="selectedAnswers[i]"
    required 
  ></v-select>
</v-flex>

这样一来,selectedAnswers数组会自动同步每个v-select的选中值,你可以随时在组件的任何地方访问这个数组获取所有选中的ID。如果需要在选中变化时执行逻辑,还可以配合@change或者watch监听selectedAnswers的变化。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:32:53