【Vue-Element-Admin】select模糊查询

文章描述了如何在前端使用el-select组件实现模块的模糊查询功能,通过前端调用后端的`find_module_list`方法,根据用户输入的字符串动态检索数据。后端通过SQL查询处理模糊搜索并返回结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

查询条件:模块
想实现select支持输入字符串,并且可以根据输入值进行检索,输入为空时返回全部数据

前端实现

export default{
    return{
        listQuery:{
            //page:1,
            //limit:20,
            //如果想兼容按条件导出,可以定义查询条件
            module:undefined,
            function_point:undefined
        },
        moduleOptions:null,
        functionPointOptions:null
    }
}

getModuleList(query){
    //是否正在从远程获取数据
    this.moduleSearchLoading=true
    if(query != ''){
        this.listQuery['module']=query
    }
    findModuleList(this.listQuery).then(response=>{
        this.moduleSearchLoading=false;
        this.moduleOptions=response.data['items']
    })
}


<template>	
   <el-form-item label="模糊查询" prop="search">
     <el-select v-model="listQuery.module" placeholder="模块" filterable clearable remote :remote-method="getModuleList"  :loading="moduleSearchLoading" @focus="(event)=>getModuleList()" style="width: 100%">
       <el-option v-for="item in moduleOptions" :key="item" :label="item" :value="item" />
     </el-select>
   </el-form-item>
</template>

后端实现

@classmethod
def find_module_list(cls,module_name=None):
   try:
       module_list=ModuleDataBase.query.filter(ModuleDataBase.is_delete==0)
       if module_name is not None:
           module_list=ModuleDataBase.query.filter(ModuleDataBase.module.like(f"%{module_name}%"))
       result=[item.module for item in module_list.all()]
       #去重
       return list(set(result))
   except Exception as e
       return False
### 如何在 vue-element-admiin 的 Search 功能中默认选中 Select 组件的指定值 在 `vue-element-admin` 中实现默认选中 `select` 组件的某个值,可以通过设置组件的绑定属性 `v-model` 来完成。具体来说,在初始化页面时,通过给绑定的数据变量赋初值即可达到效果。 以下是详细的实现方式: #### 数据模型定义 在 Vue.js 中,`select` 组件通常会绑定一个数据模型(即 `v-model`),这个模型可以是一个字符串或者数组,取决于选项的数量。为了使 `select` 默认显示某项,可以在创建实例时对该模型赋予初始值[^1]。 ```javascript data() { return { selectedValue: 'defaultOption' // 设置默认选中的值 }; } ``` #### 配置 Options 列表 确保 `options` 数组中有对应的选项可供选择。如果目标是让某些特定值被预设,则这些值必须存在于 `options` 列表中。 ```javascript methods: { getOptions() { this.options = [ { value: 'option1', label: 'Option One' }, { value: 'option2', label: 'Option Two' }, { value: 'defaultOption', label: 'Default Option' } ]; } }, created() { this.getOptions(); // 初始化 options } ``` #### 使用模板语法渲染界面 最后一步是在 HTML 模板部分正确配置 `<el-select>` 和其子标签 `<el-option>`,并将其与上述定义好的数据模型关联起来。 ```html <template> <div class="search-container"> <el-select v-model="selectedValue" placeholder="请选择"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> </template> ``` 以上代码片段展示了如何设定默认值以及展示下拉菜单的内容结构[^3]。 #### 注意事项 需要注意的是,当使用动态加载的方式获取远程服务器上的数据作为选项列表时,应确保在网络请求完成后才更新视图层的状态,否则可能导致未按预期显示默认值的情况发生[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值