【问题标题】:Vuetify autocomplete - set an initial search value?Vuetify 自动完成 - 设置初始搜索值?
【发布时间】:2020-08-20 18:34:03
【问题描述】:

我几乎处于 vuetify 的初学者水平,我想在 <v-dialog> 中的 <v-autocomplete> 上设置搜索值。

我希望结果像这样:(已编辑)

更像这样(编辑:添加图像)

但输入字段为空。

我从以下位置获取示例代码: https://vuetifyjs.com/en/components/dialogs/#nested-dialogs 并稍作修改:

    <v-dialog v-model="dialog2" max-width="500px">
      <v-card>
        <v-card-title>
          Dialog 2
        </v-card-title>
        <v-card-text>
          <v-autocomplete 
                          :items="select" 
                          :search-input.sync="search" 
                          label="A Select List" 
                          item-value="text" 
                          return-object
                          autofocus
                          ></v-autocomplete>
        </v-card-text>
        <v-card-actions>
          <v-btn color="primary" text @click="dialog2 = false">
            Close
          </v-btn>
        </v-card-actions>
      </v-card>
    </v-dialog>

JS

new Vue({
  el: "#app",
  vuetify: new Vuetify(),
  data() {
    return {
      dialog2: false,
      search: "1",
      select: [{ text: "State 1" }, { text: "State 2" }, { text: "Another 2" }, { text: "State 3" }]
    };
  },
  watch: {
    search(n, o) {
      console.log("watch search", n, o);
      // at some point search is set to null
      // reset it to the old value
      if (n === null) this.search = o;
    }
  },
  mounted() {
    this.search = "2";
  }
});

我还制作并更新(编辑)了一个代码笔:
https://codepen.io/joergwork/pen/xxVRwyE

对此有什么想法?

【问题讨论】:

  • @DigitalDrifter 是的,我必须更准确 - 我已经编辑了上面的问题。我明确地想设置搜索表达式。实际上,我不知道我可以从中选择哪些项目——它们应该在输入搜索表达式后从服务器加载。因此我无法设置value。

标签: javascript vuejs2 autocomplete vuetify.js


【解决方案1】:

我会使用计算值:

模板

<div id="app">
  <v-app id="inspire">
    <div>
      <v-row justify="center">
        <v-btn color="primary" class="ma-2" dark @click="dialog2 = true">
          Open Dialog 2
        </v-btn>
        <v-dialog v-model="dialog2" max-width="500px">
          <v-card>
            <v-card-title>
              Dialog 2
            </v-card-title>
            <v-card-text>
              <v-autocomplete :value="searchText" :items="select" :search-input.sync="search" label="A Select List" item-value="text" return-object autofocus></v-autocomplete>
            </v-card-text>
            <v-card-actions>
              <v-btn color="primary" text @click="dialog2 = false">
                Close
              </v-btn>
            </v-card-actions>
          </v-card>
        </v-dialog>
      </v-row>
    </div>
  </v-app>
</div>

JS

Vue.config.productionTip = false;
Vue.config.devtools = false;
new Vue({
  el: "#app",
  vuetify: new Vuetify(),
  computed: {
    searchText() {
      return this.select[0] || ''
    }
  },
  data() {
    return {
      dialog2: false,
      search: "1",
      select: [{ text: "State 1" }, { text: "State 2" }, { text: "Another 2" }, { text: "State 3" }]
    };
  },
  watch: {
    search(n, o) {
      console.log("watch search", n, o);
      // at some point search is set to null
      // reset it to the old value
      if (n === null) this.search = o;
    }
  },
  mounted() {
    this.search = "2";
  }
});

【讨论】:

  • 谢谢,不幸的是,这并不能解决我的问题。我不想选择一个项目,我只想设置 search-item 文本,另外我希望“选择列表”可见(如第二张图片)。
猜你喜欢
  • 2019-08-19
  • 1970-01-01
  • 2021-06-19
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 2012-03-11
  • 2019-02-25
相关资源
最近更新 更多