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词云(分析景点精选评论文本主题词)

相关推荐
m0_748255262 分钟前
easyExcel导出大数据量EXCEL文件,前端实现进度条或者遮罩层
前端·excel
web1478621072335 分钟前
C# .Net Web 路由相关配置
前端·c#·.net
m0_7482478036 分钟前
Flutter Intl包使用指南:实现国际化和本地化
前端·javascript·flutter
飞的肖40 分钟前
前端使用 Element Plus架构vue3.0实现图片拖拉拽,后等比压缩,上传到Spring Boot后端
前端·spring boot·架构
青灯文案11 小时前
前端 HTTP 请求由 Nginx 反向代理和 API 网关到后端服务的流程
前端·nginx·http
m0_748254881 小时前
DataX3.0+DataX-Web部署分布式可视化ETL系统
前端·分布式·etl
ZJ_.1 小时前
WPSJS:让 WPS 办公与 JavaScript 完美联动
开发语言·前端·javascript·vscode·ecmascript·wps
GIS开发特训营1 小时前
Vue零基础教程|从前端框架到GIS开发系列课程(七)响应式系统介绍
前端·vue.js·前端框架·gis开发·webgis·三维gis
Cachel wood2 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
学代码的小前端2 小时前
0基础学前端-----CSS DAY9
前端·css