elementui 远程搜索选择框+后端Flask

支持远程搜索的select框是一个必备的功能,本文分享如何使用elmentui 实现从后端flask获取数据的el-autocomplete 控件。类似输入一个京字,就从数据库查询所有的城市,模糊匹配到带有京字的城市,并且可以选中。

1 前端

前端要使用到el-autocomplete控件,输入控件后的提示通过querySearch实现, 选择之后的操作通过handleSelect实现。

jsx 复制代码
<el-autocomplete
          v-model="city"
          :fetch-suggestions="querySearch"
          placeholder="请输入城市名称"
          @select="handleSelect"
          style="width: 300px; margin-left: 10px;"
          clearable
      >
      </el-autocomplete>
      
      
data(){
    return{
      city: '',
    }
  },
  
  methods: {
    // cb 为回调函数需要把后端返回的值传给它
    querySearch(queryString, cb) {
      // 发送请求到Flask后端获取模糊搜索结果
      getCities(queryString).then(res=>{
        // 返回数据的形式是 [{value:'xxxx'}, {value:'yyyyy'} ...] 这样
        cb(res.data.data)
      })
    },
    handleSelect(item) {
      this.city = item.value; // 选择后将城市名存储在city变量中
      this.$message('加载'+this.city+'数据成功', 'success', 3000)
    },
  },

getCities

jsx 复制代码
// 获取城市列表
export function  getCities(queryString){
    return request({
        url: `/tour/cities`,
        method: 'get',
        params:{ keyword: queryString }
    });
}

2 后端

我们要读取景点列表中所有的城市数据,形成一个[{value:'xxxx'}, {value:'yyyyy'} ...] 形式的数据返回就可以。

python 复制代码
# 获取城市
@main.route('/tour/cities', methods=['GET'])
def search_cities():
    keyword = request.args.get('keyword', '')
    try:
        # 查询并去重城市名称,使用SQLAlchemy的distinct
        cities = Tour.query.with_entities(distinct(Tour.city)).filter(Tour.city.ilike(f'%{keyword}%')).all()

        # 将结果转换为字典列表
        result = [{'value': city[0]} for city in cities]
        return make_response(code=0, data=result)
    except Exception as e:
        return make_response(code=1, message=str(e))

3 实现效果

下一期就来做根据选择框的数据来加载echarts-wordcloud词云(分析景点精选评论文本主题词)

相关推荐
李少兄10 分钟前
简单讲讲 SVG:前端开发中的矢量图形
前端·svg
前端小万11 分钟前
告别 CJS 库加载兼容坑
前端·前端工程化
恋猫de小郭11 分钟前
Flutter 3.38.1 之后,因为某些框架低级错误导致提交 Store 被拒
android·前端·flutter
JarvanMo15 分钟前
Flutter 需要 Hooks 吗?
前端
光影少年26 分钟前
前端如何虚拟列表优化?
前端·react native·react.js
Moment27 分钟前
一杯茶时间带你基于 Yjs 和 reactflow 构建协同流程图编辑器 😍😍😍
前端·后端·面试
invicinble1 小时前
对于前端数据的生命周期的认识
前端
PieroPc1 小时前
用FastAPI 后端 和 HTML/CSS/JavaScript 前端写一个博客系统 例
前端·html·fastapi
hunter14501 小时前
2026.1.4 html简单制作
java·前端·笔记·html
鹏程十八少1 小时前
Android 深入剖析Android内存泄漏:ViewPager2与Fragment的生命周期陷阱
android·前端·app