动态加载需要在点击之后才能搜索到子节点的内容。该怎么实现不点击,也能搜索到子节点的呢?
当没有搜索到内容时,v-model可以获取到输入的这个值吗?
动态加载需要在点击之后才能搜索到子节点的内容。该怎么实现不点击,也能搜索到子节点的呢?
当没有搜索到内容时,v-model可以获取到输入的这个值吗?
<template>
<el-cascader
:options="options"
lazy
:lazy-load="loadOptions"
:filter-method="filterMethod"
placeholder="Please select"
></el-cascader>
</template>
<script>
export default {
data() {
return {
options: []
};
},
methods: {
loadOptions(node, resolve) {
setTimeout(() => {
resolve([
{
value: 'dynamic1',
label: 'Dynamic 1'
},
{
value: 'dynamic2',
label: 'Dynamic 2'
}
]);
}, 1000);
},
filterMethod(input, option) {
// 自定义搜索逻辑
// 动态加载数据
return option.label.indexOf(input) > -1;
}
}
};
</script>
自定义:
<template>
<el-input v-model="inputValue" placeholder="Please select">
<el-cascader
slot="append"
:options="options"
lazy
:lazy-load="loadOptions"
:filter-method="filterMethod"
v-model="selectedValue"
></el-cascader>
</el-input>
</template>
<script>
export default {
data() {
return {
inputValue: '',
selectedValue: [],
options: []
};
},
methods: {
loadOptions(node, resolve) {
// 动态加载
},
filterMethod(input, option) {
// 搜索逻辑
}
},
watch: {
selectedValue(value) {
this.inputValue = value.join('/');
}
}
};
</script>
<el-cascader :filter-method="dataFilter"/>
methods: {
dataFilter(node, keyword) {
// 搜素不区分大小写
if (!!~node.text.indexOf(keyword) || !!~node.text.toUpperCase().indexOf(keyword.toUpperCase())) {
return true;
}
}
}
6 回答3k 阅读✓ 已解决
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
懒加载组件lazy-cascader,看下能否满足需求