繁体   English   中英

vuetify v-menu 中的搜索功能

[英]search functionality in v-menu in vuetify

<v-menu attach="#user-filters" offset-y class="user-filters">
 <template v-slot:activator="{ on, attrs }">
  <div class="dropdown" v-bind="attrs" v-on="on">User Name</div>
 </template>
 <v-list id="user-filters">
  <template v-for="(user_name, index) in user_names">
   <v-list-item
    :key="`name_${index}`"
    @click="filterUsers({name: user_name})">
    <v-list-item-title>{{ user_name.name }}</v-list-item-title>
   </v-list-item>
  </template>
 </v-list>
</v-menu>

我正在使用 v-menu 定义过滤器,但 v-menu 下拉列表中的问题是我没有搜索功能来搜索下拉列表,所以我正在考虑切换到 v-autocomplete 但不知道如何实现它。 请帮帮我。 我正在使用 vuetify 2.3.10 版。

这是搜索/过滤的最佳方法,select 并使用 v-autocomplete 删除过滤的用户。

<template>
  <v-app>
    <div id="app">
      <v-autocomplete
        v-model="filteredUsers"
        :items="user_names"
        filled
        chips
        color="blue-grey lighten-2"
        label="Select"
        item-text="name"
        item-value="name"
        hide-selected
        multiple
      >
        <template v-slot:selection="data">
          <v-chip
            v-bind="data.attrs"
            :input-value="data.selected"
            close
            @click="data.select"
            @click:close="remove(data.item)"
          >
            {{ data.item.name }}
          </v-chip>
        </template>
        <template v-slot:item="data">
          <template>
            <v-list-item-content>
              <v-list-item-title v-html="data.item.name"></v-list-item-title>
            </v-list-item-content>
          </template>
        </template>
      </v-autocomplete>
    </div>
  </v-app>
</template>

<script>
export default {
  name: "App",

  data: () => ({
    user_names: [{ name: "abc" }, { name: "def" }, { name: "xyz" }],
    filteredUsers: [],
  }),
  methods: {
    //to remove users which a user wants
    remove(item) {
      //find index of user by name
      const index = this.filteredUsers.indexOf(item.name);
      //if user find then remove from selected users array
      if (index >= 0) this.filteredUsers.splice(index, 1);
    },
  },
};
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM