当前位置:首页 > 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)
    );
  }
}

优化搜索

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

  • 忽略大小写:将城市名和输入文本都转为小写比较
  • 防抖处理:减少频繁触发搜索的频率
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实现城市选项

Vue 实现城市选择功能 使用 Vue 实现城市选择功能可以通过多种方式完成,常见方法包括使用现成的 UI 组件库或自定义实现。以下是几种常见方法: 使用 Element UI 的 Cascader…

css如何制作页面模糊

css如何制作页面模糊

使用 backdrop-filter 属性 通过 backdrop-filter 属性可以直接为元素背后的区域添加模糊效果。该属性需要浏览器支持(如 Chrome、Edge、Safari)。示例代码:…

vue实现模糊

vue实现模糊

Vue实现模糊搜索的方法 在Vue中实现模糊搜索功能,可以通过多种方式完成。以下是几种常见的方法: 使用JavaScript的filter和includes方法 <template&g…

vue实现模糊查找

vue实现模糊查找

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

vue实现城市定位

vue实现城市定位

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

vue 模糊查询实现

vue 模糊查询实现

实现 Vue 模糊查询的方法 使用计算属性实现模糊查询 在 Vue 中,可以通过计算属性结合 JavaScript 的 filter 和 includes 方法实现模糊查询。以下是一个示例代码:…