Heim  >  Artikel  >  Web-Frontend  >  Wie implementiert man eine Suchassoziation in Vue?

Wie implementiert man eine Suchassoziation in Vue?

王林
王林Original
2023-06-25 09:28:231743Durchsuche

Mit der kontinuierlichen Weiterentwicklung der Netzwerktechnologie bieten immer mehr Websites und Anwendungen Suchfunktionen, damit Benutzer schnell finden, was sie brauchen. Die Suchverknüpfung, auch „Auto-Fill“ genannt, ist eine Funktion, die es Benutzern ermöglicht, den gesuchten Inhalt schneller zu finden. In Vue kann die Suchassoziationsfunktion einfach implementiert werden. In diesem Artikel wird erläutert, wie Sie mit Vue eine einfache Suchassoziationskomponente erstellen.

Zunächst benötigen Sie eine Datenquelle, die die zu durchsuchenden Optionen enthält, um eine Assoziationsliste zu erstellen. Hier können wir ein einfaches Array mit einigen gefälschten Daten verwenden:

const options = [
  { value: 'Java', label: 'Java' },
  { value: 'JavaScript', label: 'JavaScript' },
  { value: 'Python', label: 'Python' },
  { value: 'Ruby', label: 'Ruby' },
  { value: 'Swift', label: 'Swift' },
  { value: 'Kotlin', label: 'Kotlin' },
  { value: 'C#', label: 'C#' },
  { value: 'Go', label: 'Go' },
  { value: 'PHP', label: 'PHP' },
  { value: 'TypeScript', label: 'TypeScript' }
]

Jetzt müssen wir eine Vue-Komponente erstellen, die das Suchfeld und die Vorhersageliste anzeigt. In dieser Komponente erstellen wir ein data-Objekt zum Speichern aller relevanten Zustände und Eigenschaften, das den aktuellen Suchbegriff und die Liste der anzuzeigenden Assoziationen enthält. Wir werden auch eine von Vue berechnete Eigenschaft filteredOptions zum Filtern des options-Arrays basierend auf dem aktuellen Suchbegriff einführen. Schließlich müssen wir einige Methoden zur Verarbeitung von Benutzereingaben und zur Auswahl des Zuordnungselements hinzufügen. data 对象来存储所有相关的状态和属性,其中包含当前搜索词,以及要显示的联想列表。我们还将引入一个 Vue 计算属性 filteredOptions,用于根据当前搜索词过滤 options 数组。最后,我们还需要添加一些方法,用于处理用户输入和选中联想项的操作。

<template>
  <div class="search-wrapper">
    <input type="text" v-model="searchTerm" @input="handleInput" @keydown.enter="handleEnter">
    <ul v-if="showList">
      <li v-for="(option, index) in filteredOptions" :key="index" @click="handleSelect(index)">{{ option.label }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data () {
    return {
      searchTerm: '',
      showList: false,
      options: [
        { value: 'Java', label: 'Java' },
        { value: 'JavaScript', label: 'JavaScript' },
        { value: 'Python', label: 'Python' },
        { value: 'Ruby', label: 'Ruby' },
        { value: 'Swift', label: 'Swift' },
        { value: 'Kotlin', label: 'Kotlin' },
        { value: 'C#', label: 'C#' },
        { value: 'Go', label: 'Go' },
        { value: 'PHP', label: 'PHP' },
        { value: 'TypeScript', label: 'TypeScript' }
      ]
    }
  },
  computed: {
    filteredOptions () {
      return this.options.filter(option => option.label.toLowerCase().includes(this.searchTerm.toLowerCase()))
    }
  },
  methods: {
    handleInput () {
      this.showList = true
    },
    handleEnter () {
      if (this.filteredOptions.length > 0) {
        this.searchTerm = this.filteredOptions[0].label
        this.showList = false
      }
    },
    handleSelect (index) {
      this.searchTerm = this.filteredOptions[index].label
      this.showList = false
    }
  }
}
</script>

在代码中,我们先设置了一个 data 对象,其中包含了当前用户输入的搜索词、控制联想列表是否显示的布尔值 showList,以及数据源 options。为了实现过滤功能,我们使用了一个计算属性 filteredOptions 来根据搜索词过滤选项,并将其映射到一个新的数组。与此同时,我们定义了3个方法:

  • handleInput:当输入框的值发生改变时触发的方法,该方法将 showList 设为 true
  • handleEnter:当用户按下 Enter 键时触发的方法。该方法检查当前是否有联想选项,如果有,则将第一个选项的值设置为搜索词,并将 showList 设为 false
  • handleSelect:当用户点击联想列表中的某个选项时触发的方法。该方法将所选选项的值设置为搜索词,并将 showList 设为 false

最后,我们在 template 中定义了一个搜索框和一个联想列表,其中搜索框的值绑定到 searchTerm 上,当用户输入内容时,handleInput 方法会被调用,从而更新 showList 的状态。如果 showList 为真,则联想列表会显示。列表中的每个选项都绑定到 filteredOptions 数组中的元素,并使用 v-for 进行渲染。当用户点击某个选项时,handleSelectrrreee

Im Code richten wir zunächst ein data-Objekt ein, das die vom aktuellen Benutzer eingegebenen Suchbegriffe enthält, den booleschen Wert showList, der steuert, ob die Assoziationsliste angezeigt wird wird angezeigt und Datenquelle Optionen. Um die Filterfunktion zu implementieren, verwenden wir eine berechnete Eigenschaft filteredOptions, um die Optionen basierend auf dem Suchbegriff zu filtern und sie einem neuen Array zuzuordnen. Gleichzeitig haben wir drei Methoden definiert:

  • handleInput: Eine Methode, die ausgelöst wird, wenn sich der Wert des Eingabefelds ändert. Diese Methode wird showListcode> Auf <code>true setzen.
  • handleEnter: Methode, die ausgelöst wird, wenn der Benutzer die Eingabetaste drückt. Diese Methode prüft, ob derzeit Assoziationsoptionen vorhanden sind, und wenn ja, setzt sie den Wert der ersten Option auf den Suchbegriff und setzt showList auf false.
  • handleSelect: Methode, die ausgelöst wird, wenn der Benutzer auf eine Option in der Zuordnungsliste klickt. Diese Methode setzt den Wert der ausgewählten Option auf den Suchbegriff und setzt showList auf false.
Schließlich haben wir ein Suchfeld und eine Zuordnungsliste in template definiert, wobei der Wert des Suchfelds an searchTerm, When, gebunden ist Wenn der Benutzer Inhalte eingibt, wird die Methode handleInput aufgerufen, wodurch der Status von showList aktualisiert wird. Wenn showList wahr ist, wird die Vorhersageliste angezeigt. Jede Option in der Liste ist an ein Element im Array filteredOptions gebunden und mit v-for gerendert. Wenn der Benutzer auf eine Option klickt, wird die Methode handleSelect aufgerufen, die den Wert der ausgewählten Option festlegt und die Vorhersageliste schließt. 🎜🎜Zusammenfassend können wir sehen, dass es nicht schwierig ist, Vue zum Implementieren einer Suchassoziation zu verwenden. Es ist einfach, eine Suchvorhersagekomponente zu erstellen, indem Sie die Datenquelle als Array einrichten, Optionen basierend auf Suchbegriffen filtern und einfache Methoden und Ereignisse verwenden, um Benutzereingaben und -auswahlen zu verarbeiten. 🎜

Das obige ist der detaillierte Inhalt vonWie implementiert man eine Suchassoziation in Vue?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn