当前位置:首页 > VUE

vue实现城市模糊查询

2026-01-23 03:58:00VUE

实现思路

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

数据准备

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

vue实现城市模糊查询

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

输入监听

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

vue实现城市模糊查询

<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)
    );
  }
}

优化搜索

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

  • 忽略大小写:将城市名和输入文本都转为小写比较
  • 防抖处理:减少频繁触发搜索的频率
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 实现城市选择功能 使用 Element UI 的 Cascader 组件 Element UI 提供了一个 Cascader 级联选择器组件,非常适合实现城市选择功能。需要先安装 Elemen…

vue实现模糊查找

vue实现模糊查找

实现模糊查找的方法 在Vue中实现模糊查找通常涉及结合输入框的监听、数据过滤和展示逻辑。以下是几种常见的方法: 使用计算属性过滤数据 通过计算属性对原始数据进行过滤,匹配用户输入的关键词。这种方法适…

vue实现城市定位

vue实现城市定位

Vue 实现城市定位的方法 使用浏览器原生 Geolocation API 通过浏览器内置的 navigator.geolocation 获取用户经纬度,再调用逆地理编码服务转换为城市信息。 //…

vue实现城市下拉

vue实现城市下拉

实现城市下拉选择功能 使用Vue实现城市下拉选择功能可以通过多种方式完成,以下是一个常见的实现方法: 基础实现方案 安装依赖(如需要): npm install element-ui 组件代码示例…

vue模糊搜索怎么实现

vue模糊搜索怎么实现

Vue 模糊搜索的实现方法 在 Vue 中实现模糊搜索可以通过多种方式完成,以下是几种常见的方法: 使用计算属性过滤数据 通过计算属性结合 JavaScript 的 filter 和 include…

vue的模糊查询实现

vue的模糊查询实现

模糊查询实现方法 在Vue中实现模糊查询通常结合输入框和列表过滤功能,以下是几种常见方法: 使用计算属性过滤列表 通过计算属性实时过滤数组数据,适用于小型数据集: <template>…