vue el-cascader添加远程搜索方法

本文讲解了如何在Vue的el-cascader组件中运用before-filter进行中文搜索,配合debounce优化性能,以及input和change事件的使用策略。

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

核心:1、使用before-filter,在此处编写处理的逻辑代码。2、结合自带的:debounce属性添加防抖。3、@input.native使用input事件编写搜索框未输入需要展示的数据的逻辑。4、@change中编写,所选项清空时的逻辑

<el-cascader

:key="keyNum"

filterable

@input.native="inputNative"

:before-filter="beforeFilter"

v-model="form.select"

:props="cascaderProps"

ref="cascaderRef"

@change="handleChange"

:options="cascaderOptiones"

placeholder="请选择"

clearable

:show-all-levels="false"

debounce="800"

/>

1、:before-filter的方法代码

beforeFilter(value) {

let str = value;

if (str && str !== "") {

//计算中文字节,原需求添加大于2个汉字时才发起搜索请求

let len = 0;

for (var i = 0; i < str.length; i++) {

var c = str.charCodeAt(i); //单字节加1

if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {

len++;

} else {

len += 2;

}

}

if(len>4){

listData({ str: str }).then((res) => {

this.cascaderOptiones.length = 0;

res.data.map((item) => {

item.value = item.id;

item.id = item.id;

item.label = item.label;

});

this.cascaderOptiones = res.data;

});

}

} else {

//此处编写搜索自负为空时的代码逻辑

}

return false;

},

2、@input.native的方法代码

inputNative(e){

// console.log(e.target.value)

if(e.target.value==''||!e.target.value){

this.beforeFilter('')

}

},

3、@change的方法(处理点击自带x标志删除所选项后的代码,与filterable联用时)

handleChange(value, label) {

if(!value){

console.log(value,label,'节点值为空')

this.beforeFilter('')

}

//可填写其余判断

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值