v-autocomplete 并将用户输入设置为其值

Posted

技术标签:

【中文标题】v-autocomplete 并将用户输入设置为其值【英文标题】:v-autocomplete and setting user input as its value 【发布时间】:2018-12-30 11:12:24 【问题描述】:

我在我的项目中使用vuetify 并且需要预先输入组件。遗憾的是,v-autocomplete 实现为带有过滤器的组合框,因此它不允许将用户输入设置为 v-model(或者至少我找不到这样做的方法)。

有人可以解释一下如何实现这样的功能(可能是通过另一个 vuetify 组件)?我从服务器加载项目,但它们只是作为建议。用户需要能够键入和设置他们想要的任何值。

这是一个基本示例https://codepen.io/miklever/pen/oMZxzZ。问题是,如果我输入任何不以“John”开头的单词,v-autocomplete 会在模糊时清除它。我尝试手动设置 v-model 并将用户输入添加到数组中,但是这些方法中的任何一个都有问题并且无法按预期工作。

<div id="app">
  <v-app>
    <v-content>
      <v-container>
        <p>Name:  select || 'unknown'</>
        <v-autocomplete
          :items="items"
          :search-input.sync="search"
          v-model="select"
          cache-items
          flat
          hide-no-data
          label="Name"
        ></v-autocomplete>
      </v-container>
    </v-content>
  </v-app>
</div>

new Vue(
  el: "#app",
  data: () => (
    items: [],
    search: null,
    select: null,
    commonNames: ["John", "John2", "John3"]
  ),
  watch: 
    search(val) 
      val && val !== this.select && this.querySelections(val);
    
  ,
  methods: 
    querySelections(v) 
      setTimeout(() => 
        this.items = this.commonNames.filter(e => 
          return (e || "").toLowerCase().indexOf((v || "").toLowerCase()) > -1;
        );
      , 500);
    
  
);

【问题讨论】:

您使用的是什么 Vuetify 版本?因为 1.1.7 有这样的新功能。请检查组合框Advanced custom options 哇,他们绝对应该将 v-combobox 重命名为 v-autocomlete,反之亦然,因为这是预输入功能。谢谢@gil 看来这正是我正在寻找的。​​span> 【参考方案1】:

在 Vuetify 1.1.7 Combobox 中有新功能,您可以参考。

它在 Advance custom options 上。

【讨论】:

【参考方案2】:

遇到同样的问题并用v-combobox 解决了它,它有点像v-autocomplete 所以,你可以用&lt;v-combobox&gt;&lt;/v-combobox&gt; 替换你的标签或查看这里的文档:https://vuetifyjs.com/en/components/combobox/#usage

【讨论】:

以上是关于v-autocomplete 并将用户输入设置为其值的主要内容,如果未能解决你的问题,请参考以下文章

选择下拉列表中的复选框后如何清除 v-autocomplete(多个)搜索输入?

如何测试一个 vue vuetify v-autocomplete

Vuetify:节流/去抖动 v-autocomplete

如何使用 MySqlParameter 有条件地将列设置为其默认值?

中文字符替换为其unicode编码值小3的字符

是否可以更改 v-autocomplete 宽度?