Vue + Axios 实现输入框多条件搜索功能
在现代的Web开发中,搜索功能是一个非常重要的特性。用户们希望能够根据自己的需求输入多个条件来筛选出所需要的数据。Vue.js是一个流行的JavaScript框架,可以轻松地实现这样的功能。而Axios是一个基于Promise的HTTP库,可以方便地与后端进行数据交互。本文将结合Vue和Axios,介绍如何实现输入框多条件搜索功能。
准备工作
首先,我们需要在项目中安装Vue和Axios。可以通过以下命令来安装:
npm install vue axios
接下来,我们需要在Vue组件中引入Vue和Axios,可以通过以下代码来实现:
import Vue from 'vue'
import axios from 'axios'
Vue.prototype.$axios = axios
实现搜索功能
第一步:创建搜索组件
首先,我们需要创建一个搜索组件,该组件将包含多个输入框,用于输入搜索条件。可以创建一个名为SearchBar.vue
的文件,并在该文件中编写以下代码:
<template>
<div>
<input v-model="keyword" placeholder="请输入关键字" />
<input v-model="type" placeholder="请输入类型" />
<button @click="search">搜索</button>
</div>
</template>
<script>
export default {
data() {
return {
keyword: '',
type: ''
}
},
methods: {
search() {
this.$emit('search', {
keyword: this.keyword,
type: this.type
})
}
}
}
</script>
在上述代码中,我们创建了一个包含两个输入框和一个搜索按钮的搜索组件。输入框分别绑定了keyword
和type
这两个数据属性,用于获取用户输入的关键字和类型。当点击搜索按钮时,调用search
方法,并通过$emit
方法向父组件发送一个名为search
的事件,同时将用户输入的关键字和类型作为参数传递给父组件。
第二步:创建搜索结果组件
接下来,我们需要创建一个搜索结果组件,该组件将用于展示根据搜索条件筛选出的数据。可以创建一个名为SearchResult.vue
的文件,并在该文件中编写以下代码:
<template>
<div>
<ul>
<li v-for="item in items" :key="item.id">{{ item.title }}</li>
</ul>
</div>
</template>
<script>
export default {
props: {
items: {
type: Array,
default: () => []
}
}
}
</script>
在上述代码中,我们创建了一个包含一个ul
元素的搜索结果组件。通过v-for
指令遍历items
数组,并将每个元素的title
属性显示在列表中。items
属性是一个数组类型的属性,用于接收父组件传递过来的搜索结果数据。
第三步:创建父组件
最后,我们需要创建一个父组件,用于管理搜索组件和搜索结果组件。可以创建一个名为App.vue
的文件,并在该文件中编写以下代码:
<template>
<div>
<search-bar @search="handleSearch"></search-bar>
<search-result :items="searchResult"></search-result>
</div>
</template>
<script>
import SearchBar from './SearchBar.vue'
import SearchResult from './SearchResult.vue'
export default {
components: {
SearchBar,
SearchResult
},
data() {
return {
searchResult: []
}
},
methods: {
handleSearch({ keyword, type }) {
this.$axios.get('/api/search', {
params: {
keyword,
type
}
})
.then(response => {
this.searchResult = response.data
})
.catch(error => {
console.error(error)
})
}
}
}
</script>
在上述代码中,我们在父组件中引入了搜索组件和搜索结果组件,并在模板中使用了这两个组件。当搜索组件触发search
事件时,调用handleSearch
方法。在handleSearch
方法中,使用$axios
发送一个GET请求到/api/search
接口,并通过params
属性传递搜索条件。在请求成功后,将返回