el-cascader 省市县动态加载 回显 vue3 ts <script lang="ts" setup>
时间: 2024-02-14 11:13:34 浏览: 115
使用element中el-cascader级联选择器:实现省市区街道筛选、动态懒加载以及回显
好的,我可以为你提供一些关于el-cascader省市县动态加载和回显的Vue3 TypeScript代码:
```html
<template>
<el-cascader
v-model:value="selectedValues"
:options="options"
:props="props"
@change="handleCascaderChange"
/>
</template>
<script lang="ts" setup>
import { ref, onMounted } from 'vue';
import { CascaderOption } from 'element-plus/lib/el-cascader';
const selectedValues = ref([]);
const options = ref([]);
const props = {
lazy: true,
lazyLoad: loadOptions,
value: 'value',
label: 'label',
children: 'children',
};
async function loadOptions(
parentNode: CascaderOption | null,
resolve: (options: CascaderOption[]) => void,
) {
if (!parentNode) {
// load root options
const res = await fetch('/api/provinces');
const provinces = await res.json();
const formattedProvinces = provinces.map((province: any) => ({
value: province.code,
label: province.name,
isLeaf: false,
}));
options.value = formattedProvinces;
resolve(formattedProvinces);
} else {
// load child options
const res = await fetch(`/api/cities?provinceCode=${parentNode.value}`);
const cities = await res.json();
const formattedCities = cities.map((city: any) => ({
value: city.code,
label: city.name,
isLeaf: false,
}));
parentNode.children = formattedCities;
resolve(formattedCities);
}
}
function handleCascaderChange(selectedValues: string[]) {
console.log(selectedValues);
}
onMounted(async () => {
// load default values
const res = await fetch('/api/default');
const defaultValues = await res.json();
selectedValues.value = defaultValues;
});
</script>
```
这段代码中,我们使用了`el-cascader`组件来实现省市县的级联选择,使用了`lazy`和`lazyLoad`属性来实现动态加载,使用`v-model:value`来绑定选中的值,使用`@change`事件来处理选中值的变化。我们还使用了`ref`来定义响应式变量,使用`onMounted`钩子来在页面加载时加载默认值。你可以根据自己的需求对这段代码进行修改。
阅读全文