Angel丶守护&雪之源 2022-03-15 14:31 采纳率: 22%
浏览 138
已结题

element cascader中的before-filter钩子输入框的搜索关键词为空时不触发,还有什么方法监测输入关键词的变化

问题遇到的现象和发生背景

我想监测输入关键词的变化,当有值时进行数据请求,没值时默认请求初始数据

问题相关代码,请勿粘贴截图
<el-cascader
        v-model="cascaderValue"
        :options="Options"
        :props="Props"
        ref="myCascader"
        :show-all-levels='showAllLevels'
        :filterable="Filterable"
        :clearable='clearable'
        separator
        :debounce='debounce'
        @change="handleChange"
        @expand-change="expandChange"
        :before-filter="searchFilter">
 </el-cascader>

searchFilter(searchKey){
            this.searchVal=searchKey
            let query={
                with:1,
                paged:1,
                per_page:100,
                search:this.searchVal
            }
            this.getOptions(query)
            return false
},

getOptions(query){
            const req = new ARequest({
                method:'get',
                url:`/api/vc/term?query[term_group]=term-product`,
                nonce:true,
                lang:true,
                catch:true,
                query
            })
            req.send().then(res=>{
                // 判断是否是展开选项还是搜索或者默认加载数据
                if(this.soureVal!=''){
                    this.getMenuBtnList(this.Options,res,this.soureVal)
                }else if(this.searchVal!=''){
                    let Options=[]
                    res.forEach(item=>{
                        let obj = {
                            label:item[this.nameKey],
                            value:item[this.idKey]
                        }
                        Options.push(obj)
                    })
                    this.Options = Options
                    this.searchVal=''
                }else if(query.search==''||this.soureVal==''){
                    let Options=[]
                    res.forEach(item=>{
                        let obj = {
                            label:item[this.nameKey],
                            value:item[this.idKey],
                            children:[]
                        }
                        Options.push(obj)
                    })
                    this.Options = Options
                }
            })
            
        },

getMenuBtnList (menuTreeList, menuList,val) {
            let list =[]
            for (let item of menuTreeList) {
                if(menuList.length==0&&item.value==val){
                    let {children,...data}=item
                    item=data
                }else{
                    for(let item1 of menuList){
                        if (item.value === val) {
                            list.push({
                                label: item1[this.nameKey],
                                value: item1[this.idKey],
                                children: []
                            });
                            item.children=list
                        } else if (item.children.length > 0 ) {
                            this.getMenuBtnList(item.children, menuList,val);
                        }
                    }
                }
            }
            this.soureVal=''
        },

created(){
        let query = {
            with:1,
            paged:1,
            per_page:-1,
            'query[parent]':0
        } 
        this.getOptions(query)
 }

  • 写回答

1条回答 默认 最新

  • 崽崽的谷雨 2022-03-15 14:53
    关注

    cascaderValue 判断这个的值 。给 不同的参数 。

    或者 监听 这个 watch也可以做到 。

    filter-method 这个可以自定义逻辑

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月18日
  • 已采纳回答 5月18日
  • 创建了问题 3月15日

悬赏问题

  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化