ホームページ >ウェブフロントエンド >Vue.js >Vue で検索関連付けを実装するにはどうすればよいですか?

Vue で検索関連付けを実装するにはどうすればよいですか?

王林
王林オリジナル
2023-06-25 09:28:231777ブラウズ

ネットワーク技術の継続的な発展に伴い、ユーザーが必要なものを素早く見つけることができる検索機能を提供する Web サイトやアプリケーションがますます増えています。検索の関連付けは「オートフィル」とも呼ばれ、ユーザーが検索したいコンテンツをより早く見つけることができる機能です。 Vueでは検索関連付け機能を簡単に実装できます。この記事では、Vue を使用して簡単な検索関連付けコンポーネントを作成する方法を紹介します。

まず、関連リストを生成するために検索するオプションを含むデータ ソースが必要です。ここでは、偽のデータを含む単純な配列を使用できます。

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' }
]

次に、検索ボックスと予測リストを表示する Vue コンポーネントを作成する必要があります。このコンポーネントでは、すべての関連する状態とプロパティを保存する data オブジェクトを作成します。これには、現在の検索語と、表示される関連付けのリストが含まれます。また、現在の検索語に基づいて options 配列をフィルター処理するための Vue 計算プロパティ filteredOptions も導入します。最後に、ユーザー入力を処理し、関連付け項目を選択するためのメソッドをいくつか追加する必要があります。

<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 、およびデータ ソースオプション。フィルタリング機能を実装するには、計算プロパティ filteredOptions を使用して、検索語に基づいてオプションをフィルタリングし、それを新しい配列にマップします。同時に 3 つのメソッドを定義しました:

  • handleInput: 入力ボックスの値が変更されたときにトリガーされるメソッド。このメソッドは showList true に設定します。
  • handleEnter: ユーザーが Enter キーを押したときにトリガーされるメソッド。このメソッドは、現在関連付けオプションがあるかどうかを確認し、存在する場合は、最初のオプションの値を検索語に設定し、showListfalse に設定します。
  • handleSelect: ユーザーが関連付けリスト内のオプションをクリックしたときにトリガーされるメソッド。このメソッドは、選択したオプションの値を検索語に設定し、showListfalse に設定します。

最後に、template で検索ボックスと関連リストを定義し、検索ボックスの値が searchTerm にバインドされています。 user コンテンツを入力すると、handleInput メソッドが呼び出され、それによって showList のステータスが更新されます。 showList が true の場合、関連付けリストが表示されます。リスト内の各オプションは、filteredOptions 配列内の要素にバインドされ、v-for を使用してレンダリングされます。ユーザーがオプションをクリックすると、handleSelect メソッドが呼び出され、選択したオプションの値が設定され、予測リストが閉じられます。

要約すると、Vue を使用して検索関連付けを実装するのは難しくないことがわかります。データ ソースを配列として設定し、検索用語に基づいてオプションをフィルタリングし、シンプルなメソッドとイベントを使用してユーザーの入力と選択を処理することで、検索予測コンポーネントを簡単に作成できます。

以上がVue で検索関連付けを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。