Comment implémenter des fonctions de recherche et de filtrage via Vue et Element-Plus
Citation :
Dans les applications Web modernes, les fonctions de recherche et de filtrage sont un élément très important, aidant les utilisateurs à trouver rapidement les informations dont ils ont besoin. Vue est un framework JavaScript populaire et Element-Plus est une bibliothèque de composants d'interface utilisateur pour Vue. Leur combinaison peut facilement implémenter des fonctions de recherche et de filtrage. Cet article expliquera comment utiliser Vue et Element-Plus pour implémenter ces fonctions et fournira des exemples de code pertinents.
npm install vue npm install element-plus
vue create search-filter-app cd search-filter-app
Ensuite, sélectionnez les options de configuration en fonction des invites, ou utilisez directement la configuration par défaut pour générer l'application Vue.
src/main.js
et ajoutez le code suivant : src/main.js
文件,并添加以下代码:import { createApp } from 'vue' import App from './App.vue' import ElementPlus from 'element-plus' createApp(App).use(ElementPlus).mount('#app')
这里我们使用了ES6的模块导入语法,导入了createApp
函数和需要使用的Element-Plus组件。然后我们使用createApp
函数创建了一个Vue应用,并在应用中使用了Element-Plus。
src/components
目录下创建两个文件SearchBar.vue
和FilterBar.vue
。在SearchBar.vue
文件中添加以下代码:<template> <div> <el-input v-model="searchKeyword" placeholder="请输入搜索关键字"></el-input> </div> </template> <script> export default { data() { return { searchKeyword: '' } }, watch: { searchKeyword(newKeyword) { this.$emit('search', newKeyword) } } } </script>
在FilterBar.vue
文件中添加以下代码:
<template> <div> <el-select v-model="filterOption" placeholder="请选择过滤条件" @change="filterData"> <el-option label="选项1" value="option1"></el-option> <el-option label="选项2" value="option2"></el-option> <el-option label="选项3" value="option3"></el-option> </el-select> </div> </template> <script> export default { data() { return { filterOption: '' } }, methods: { filterData() { this.$emit('filter', this.filterOption) } } } </script>
这里,我们分别创建了两个组件,并在组件中使用了Element-Plus的输入框和下拉选择框组件。注意,在SearchBar
组件中我们使用了v-model
指令来实现双向数据绑定,并在watch
选项中监听searchKeyword
的变化,并通过$emit
方法将值传递给父组件。
src/App.vue
文件,并添加以下代码:<template> <div> <SearchBar @search="handleSearch"></SearchBar> <FilterBar @filter="handleFilter"></FilterBar> <ul> <li v-for="item in filteredData" v-bind:key="item.id">{{ item.name }}</li> </ul> </div> </template> <script> import SearchBar from './components/SearchBar.vue' import FilterBar from './components/FilterBar.vue' export default { components: { SearchBar, FilterBar }, data() { return { data: [ { id: 1, name: 'item1', option: 'option1' }, { id: 2, name: 'item2', option: 'option2' }, { id: 3, name: 'item3', option: 'option3' } ], searchKeyword: '', filterOption: '' } }, computed: { filteredData() { let result = this.data if (this.searchKeyword) { result = result.filter(item => item.name.toLowerCase().includes(this.searchKeyword.toLowerCase())) } if (this.filterOption) { result = result.filter(item => item.option === this.filterOption) } return result } }, methods: { handleSearch(keyword) { this.searchKeyword = keyword }, handleFilter(option) { this.filterOption = option } } } </script>
这里,我们在App组件中导入了SearchBar和FilterBar组件,并通过<SearchBar @search="handleSearch"></SearchBar>
和<FilterBar @filter="handleFilter"></FilterBar>
将事件绑定到App组件的方法上。在data中定义了一个数据数组,并根据搜索关键字和过滤条件进行过滤得到filteredData数组。然后使用v-for
指令将filteredData数组中的每个元素渲染为列表项。
npm run serve
然后在浏览器中访问http://localhost:8080
Ici, nous utilisons la syntaxe d'importation du module ES6 et importons la fonction createApp
et les éléments dont vous avez besoin. à utiliser -Plus de composants. Ensuite, nous avons utilisé la fonction createApp
pour créer une application Vue et utilisé Element-Plus dans l'application.
SearchBar.vue
et FilterBar.vue
dans le répertoire src/components
. Ajoutez le code suivant dans le fichier SearchBar.vue
: 🎜🎜rrreee🎜Ajoutez le code suivant dans le fichier FilterBar.vue
: 🎜rrreee🎜Ici, nous avons créé deux composants respectivement, et a utilisé les composants de la zone de saisie Element-Plus et de la zone de sélection déroulante dans le composant. Notez que dans le composant SearchBar
, nous utilisons la directive v-model
pour implémenter la liaison de données bidirectionnelle et surveiller dans l'option <code>watch
searchKeyword modifie et transmet la valeur au composant parent via la méthode $emit
. 🎜src/App.vue
et ajoutez le code suivant : 🎜🎜rrreee🎜Ici, nous avons importé les composants SearchBar et FilterBar dans le composant App et passé <SearchBar @search= " handleSearch"></SearchBar>
et <FilterBar @filter="handleFilter"></FilterBar>
lient les événements aux méthodes du composant App. Un tableau de données est défini dans data et filtré en fonction des mots-clés de recherche et des conditions de filtrage pour obtenir le tableau filteredData. Utilisez ensuite la directive v-for
pour afficher chaque élément du tableau filteredData sous forme d'élément de liste. 🎜http://localhost:8080, vous verrez une page avec un champ de recherche et une zone de sélection déroulante. Lorsque vous saisissez des mots-clés de recherche ou sélectionnez des conditions de filtrage, les données de la liste seront recherchées et filtrées en fonction de la saisie. 🎜🎜Conclusion :🎜Avec Vue et Element-Plus, nous pouvons facilement implémenter des fonctions de recherche et de filtrage. Nous avons utilisé la liaison de données de Vue et les composants de zone de saisie et de zone de sélection déroulante d'Element-Plus pour appliquer des mots-clés de recherche et des conditions de filtrage aux données via la transmission d'événements et de données, réalisant ainsi les fonctions de recherche et de filtrage. Ce qui précède est un exemple simple, vous pouvez le développer et le personnaliser en fonction de vos propres besoins. 🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!