首页 > 其他分享 >vue+axios实现输入框多条件搜索功能

vue+axios实现输入框多条件搜索功能

时间:2023-07-16 17:31:40浏览次数:50  
标签:search axios vue 输入框 Vue 搜索 组件

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>

在上述代码中,我们创建了一个包含两个输入框和一个搜索按钮的搜索组件。输入框分别绑定了keywordtype这两个数据属性,用于获取用户输入的关键字和类型。当点击搜索按钮时,调用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属性传递搜索条件。在请求成功后,将返回

标签:search,axios,vue,输入框,Vue,搜索,组件
From: https://blog.51cto.com/u_16175477/6739032

相关文章

  • vue node.js
    实现“VueNode.js”教程简介在本教程中,我将向你介绍如何使用Vue和Node.js创建一个完整的Web应用程序。Vue是一个流行的JavaScript框架,用于构建用户界面;而Node.js是一个基于JavaScript的运行时环境,用于构建服务器端应用程序。整体流程下面是实现“VueNode.js”的步骤:步骤......
  • 解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
    解决VueAxios跨域问题(预检请求)一、问题描述在前后端分离开发中,前端通过Vue框架发起Ajax请求时,如果请求的URL与前端所在的域名不一致,就会触发浏览器的跨域机制。其中一种常见的跨域问题是"RequestMethod:OPTIONS",也称为预检请求。在本文中,我们将说明如何解决这个问题。二、......
  • vue -父子组件值传递
    父组件:是指引用其他组件东西(这里叫attrgroup.vue)子组件:是指被其他组件引用的东西(这里叫category.vue)父组件引用子组件,如下:<template><!--tree属性菜单--><!--tree-node-click是子组件自定义的事件,通过事件触发然后由父组件进行感知获取数据-......
  • vue-day21-过滤器学习
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>过滤器</title><scripttype=......
  • vue.js浏览器插件
    提取地址:链接:https://pan.baidu.com/s/1Uf9yZaQfRQ1r2JvOxXX50A?pwd=l3iw提取码:l3iw加载已解压的扩展程序  ......
  • vue-day20---收集表单数据
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>收集表单数据</title><scriptty......
  • vue2
    一.mvvm模型MVVM 是vue实现数据驱动视图和双向数据绑定的核心原理。它把每个HTML页面都拆分成了如下三个部分:View表示当前页面所渲染的DOM结构。Model表示当前页面渲染时所依赖的数据源。ViewModel表示vue的实例,它是MVVM的核心1.为什么要在vue中使用mvvm模型呢......
  • vue-day16---模拟一个数据监测
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><title>模拟一个数据监测你</title></head><body><scripttype="text/javascript">letdata={......
  • vue: number addition
     单页应用:(SinglePageApp,SPA)体现了其强大的优势。页面是局部刷新的,响应速度快,不需要每次加载所有的CSS/JS。前后端分离,前端(手机端)不受后端(服务器端)的开发语言的限制。Angular,React,Vue.js框架都是很好的选择。https://github.com/vuejs/awesome-vue <!DOCTYPEhtml><......
  • 【技术积累】Vue.js中的事件【一】
    Vue中的事件是什么在Vue.js中,事件是用于处理用户交互的重要机制。Vue.js提供了一系列的事件处理方法和指令,使开发者能够方便地处理用户的各种操作。1.事件绑定:Vue.js通过v-on指令来绑定事件。可以在HTML标签上使用v-on指令来监听特定的事件,并在触发事件时执行相应的方法。例如,......