可以帮我使用element ui写个级联选择器动态加载的方法吗
时间: 2023-07-30 21:07:14 浏览: 94
当使用element ui时,可以使用`<el-cascader>`组件实现级联选择器。该组件支持通过异步加载数据来实现级联选择器的动态加载。可以通过以下代码实现:
```vue
<template>
<el-cascader
:options="options"
:props="{ value: 'name', label: 'name', children: 'cities' }"
@change="handleChange"
v-model="selectedValues"
clearable
></el-cascader>
</template>
<script>
export default {
data() {
return {
options: [
{
name: "广东省",
cities: []
},
{
name: "湖南省",
cities: []
}
],
selectedValues: []
};
},
mounted() {
// 初始化数据
this.loadData(0);
this.loadData(1);
},
methods: {
loadData(index) {
this.options[index].loading = true;
// 模拟异步加载数据
setTimeout(() => {
this.options[index].cities = this.getCityData(this.options[index].name);
this.options[index].loading = false;
}, 1000);
},
getCityData(provinceName) {
// 根据省份名称获取对应的城市数据
// 这里可以根据具体的需求进行修改
if (provinceName === "广东省") {
return ["广州市", "深圳市", "珠海市"];
} else if (provinceName === "湖南省") {
return ["长沙市", "株洲市", "湘潭市"];
} else {
return [];
}
},
handleChange(value) {
console.log(value);
}
}
};
</script>
```
在这段代码中,我们使用了`<el-cascader>`组件来实现级联选择器,通过`options`属性来设置选项数据,通过`props`属性来设置选项的属性名,通过`change`事件来监听选项变化。在`mounted`生命周期函数中,我们调用`loadData`方法来初始化数据。`loadData`方法中使用了`setTimeout`来模拟异步加载数据,并在加载完成后将城市数据设置到对应的省份选项中。在`handleChange`方法中,我们可以获取到用户选择的值。
阅读全文