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

Vuetify v0.17.6:如何获取v-select组件中的自动补全输入文本

搞定这个自动补全创建新选项的问题!

嘿,刚好我对Vuetify v0.17.6这个版本的组件特性有点印象,你已经走对路子啦,只需要补全几个小步骤就能拿到用户输入的文本创建新选项:

1. 先把绑定的变量在data里声明好

你已经用了:search-value="inputText"来绑定搜索框的输入内容,那得先在组件的data里把这个变量加上,同时确保options和selected也在这儿:

export default {
  data() {
    return {
      inputText: '', // 用来同步用户输入的搜索文本
      selected: null,
      options: [
        // 这里放你的初始选项示例
        { label: '历史搜索1', id: 1 },
        { label: '历史搜索2', id: 2 }
      ]
    }
  },
  // 下面放方法
}

2. 完善你的create方法

现在inputText会自动跟着用户的输入更新,你只需要在create方法里直接用它来生成新选项就行,还可以顺手把新选项设为选中状态,体验更流畅:

methods: {
  create() {
    // 先过滤掉空输入,避免创建无效选项
    const newLabel = this.inputText.trim()
    if (!newLabel) return

    // 可选:检查有没有重复的选项,避免重复创建
    const isDuplicate = this.options.some(item => item.label.toLowerCase() === newLabel.toLowerCase())
    if (isDuplicate) {
      alert('这个搜索选项已经存在啦~')
      return
    }

    // 创建新的选项对象,id可以用时间戳临时当唯一标识
    const newOption = {
      label: newLabel,
      id: Date.now()
    }

    // 把新选项加到列表里
    this.options.push(newOption)
    // 自动选中刚创建的选项
    this.selected = newOption
    // 清空搜索框
    this.inputText = ''
  },
  // 你的edit和del方法保持原来的逻辑就行,比如删除可以这样写:
  del(data) {
    const targetIndex = this.options.findIndex(item => item.id === data.item.id)
    if (targetIndex !== -1) {
      this.options.splice(targetIndex, 1)
    }
  },
  edit(data) {
    // 这里写你的编辑逻辑,比如弹出修改框之类的
  }
}

为啥这样可行?

在Vuetify v0.17.6里,search-value这个prop是和搜索框的输入双向同步的——用户输入内容时,这个变量会自动更新,所以你直接拿this.inputText就能拿到用户刚输入的文本啦。

这样调整后,当用户输入列表里没有的内容,点击add图标,就能用输入的文本创建新的快速搜索选项了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:54:16