当前位置:首页 > VUE

vue实现城市模糊查询

2026-01-23 03:58:00VUE

实现思路

使用Vue实现城市模糊查询功能,主要通过输入框监听用户输入,结合数组的过滤方法动态匹配城市名称。核心步骤包括数据准备、输入监听、模糊匹配和结果展示。

数据准备

准备一个城市列表数据,可以存储在组件的data中或通过API获取。示例数据格式如下:

data() {
  return {
    cities: ['北京', '上海', '广州', '深圳', '杭州', '成都', '重庆', '武汉'],
    searchText: '',
    filteredCities: []
  }
}

输入监听

使用v-model双向绑定输入框的值,并监听输入变化触发查询方法:

<template>
  <div>
    <input v-model="searchText" @input="searchCities" placeholder="输入城市名">
    <ul>
      <li v-for="city in filteredCities" :key="city">{{ city }}</li>
    </ul>
  </div>
</template>

模糊匹配

methods中实现搜索逻辑,使用filterincludes方法进行模糊匹配:

methods: {
  searchCities() {
    if (!this.searchText) {
      this.filteredCities = [];
      return;
    }
    this.filteredCities = this.cities.filter(city => 
      city.includes(this.searchText)
    );
  }
}

优化搜索

为提升用户体验,可以添加以下优化:

vue实现城市模糊查询

  • 忽略大小写:将城市名和输入文本都转为小写比较
  • 防抖处理:减少频繁触发搜索的频率
searchCities: _.debounce(function() {
  const query = this.searchText.toLowerCase();
  this.filteredCities = this.cities.filter(city =>
    city.toLowerCase().includes(query)
  );
}, 300)

完整示例代码

<template>
  <div>
    <input 
      v-model="searchText" 
      @input="searchCities" 
      placeholder="输入城市名"
    >
    <ul v-if="filteredCities.length">
      <li v-for="city in filteredCities" :key="city">
        {{ city }}
      </li>
    </ul>
    <p v-else>暂无匹配城市</p>
  </div>
</template>

<script>
import _ from 'lodash';

export default {
  data() {
    return {
      cities: ['北京', '上海', '广州', '深圳', '杭州', '成都', '重庆', '武汉'],
      searchText: '',
      filteredCities: []
    }
  },
  methods: {
    searchCities: _.debounce(function() {
      const query = this.searchText.toLowerCase();
      this.filteredCities = this.cities.filter(city =>
        city.toLowerCase().includes(query)
      );
    }, 300)
  }
}
</script>

注意事项

  1. 实际项目中建议将城市数据存储在Vuex或通过API获取
  2. 大数据量情况下考虑使用Web Worker进行搜索计算
  3. 移动端需要额外处理虚拟键盘的显示/隐藏事件
  4. 可添加高亮显示匹配部分的功能增强用户体验

标签: 模糊城市
分享给朋友:

相关文章

vue实现切换城市

vue实现切换城市

实现思路 通过Vue的状态管理(如Vuex或Pinia)存储当前城市数据,结合下拉菜单或选项卡组件实现城市切换功能。切换时更新状态并触发相关数据重新加载。 核心代码实现 1. 状态管理(以Pinia…

vue实现模糊搜索

vue实现模糊搜索

实现模糊搜索的基本思路 在Vue中实现模糊搜索通常需要结合输入框和列表展示,通过监听输入框的变化实时过滤数据。核心逻辑是对比用户输入的关键词与目标数据的匹配程度,可采用字符串的includes、ind…

vue前端实现模糊查询

vue前端实现模糊查询

实现模糊查询的基本思路 在Vue中实现模糊查询通常需要结合输入框的监听事件和数据过滤功能。核心逻辑是通过用户输入的关键词,对目标数据进行筛选匹配。 使用计算属性实现 计算属性适合处理需要响应式更新的…

使用vue实现模糊查询

使用vue实现模糊查询

实现模糊查询的基本思路 在Vue中实现模糊查询通常需要结合输入框的监听、数据处理和过滤逻辑。核心步骤包括监听用户输入、处理输入内容、过滤数据列表以及渲染结果。 监听用户输入 使用v-model双向绑…

vue node实现模糊搜索

vue node实现模糊搜索

实现模糊搜索的方法 在Vue和Node.js中实现模糊搜索,可以通过前端和后端结合的方式完成。前端负责用户输入和展示结果,后端负责处理搜索逻辑和数据查询。 前端Vue实现 在Vue中,可以使用v-m…

大量数据如何模糊匹配react

大量数据如何模糊匹配react

模糊匹配的实现方法 在React中处理大量数据的模糊匹配,通常需要结合高效的算法和优化策略。以下是几种常见的方法: 使用第三方库如Fuse.js Fuse.js是一个轻量级的模糊搜索库,支持模糊匹配…