element 级联选择器 省市区动态获取
Posted 妮可是条狗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了element 级联选择器 省市区动态获取相关的知识,希望对你有一定的参考价值。
项目需要实现下图效果,并且可以支持选择到任意一级
根据获取省市区码的接口拿到当前的省市区编码,再将编码传到获取该地区数据的接口,拿到返回值传回父组件。
1.通过lazy开启动态加载,通过lazyload来设置加载数据源的方法,对节点数据添加是否为叶子节点的标志leaf,如果后台数据没有该标志,可自己手动循环添加)
2.通过props.checkStrictly=true来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
3.我的项目中获取省市区县接口有两个参数:第一个参数是type类型:省PROVINCE,市CITY,区县COUNTY,第二个参数为省市区编码,可针对自己项目接口实际情况进行调整。
<template>
<div class="cascader">
<el-cascader
:props="props"
ref="cascader"
clearable
@change="handleChange"
:options="dataList"
v-model="cascaderData"
>
</el-cascader>
</div>
</template>
<script>
export default
props: [],
data()
return
cityList: [], //市数据
countyList: [], //区县数据
dataList: [
code: "",
name: "",
,
],
props:
checkStrictly: true, //开启可以只选择一级
value: "code",
label: "name",
lazy: true, // 此处必须为true
lazyLoad: (node, resolve) =>
if (node.data.name)
this.getChildData(node.data, resolve, node.level);
,
,
provinceCode: "",
cityCode: "",
cascaderData: null,
;
,
created()
this.getProvince();
,
methods:
getChildData(data, resolve, level)
if (level == 1)
//市
this.provinceCode = data.code;
this.getCity(this.provinceCode, resolve);
else if (level == 2)
//区
this.cityCode = data.code;
this.getCounty(this.cityCode, resolve);
,
handleChange(value)
if (value.length > 0)
this.$ajax
.get(this.$urls.fastDistribute.getCityGeo + value[value.length-1])
.then((res) =>
if (res.data.code == 200)
// 将当前选中节点数据和当前路径数组返回给父组件
this.$emit("getCascaderData", res.data.data);
);
else
this.$emit("getCascaderData", "");
,
//获取省
getProvince()
this.$ajax
.get(this.$urls.getCityList, type: "PROVINCE" )
.then((res) =>
if (res.data.code == 200)
this.dataList = res.data.data;
);
,
//获取市
getCity(code, resolve)
this.$ajax
.get(this.$urls.getCityList,
type: "CITY",
code: code,
)
.then((res) =>
if (res.data.code == 200)
this.cityList = res.data.data;
resolve(this.cityList);
);
,
//获取区县
getCounty(code, resolve)
this.$ajax
.get(this.$urls.getCityList,
type: "COUNTY",
code: code,
)
.then((res) =>
if (res.data.code == 200)
let data = res.data.data;
data.forEach((item) =>
item.leaf = true; //手动添加叶子节点
);
this.countyList = data;
resolve(this.countyList);
);
,
,
;
</script>
以上是关于element 级联选择器 省市区动态获取的主要内容,如果未能解决你的问题,请参考以下文章
基于Element Cascader 级联选择器实现动态获取数据
基于Element UI Cascader 级联选择器的中国省市区级联数据
element-ui之级联选择器(Cascader) 全选 功能
Vue+ElementUI Cascader级联选择器 省市区编辑回显(通过CodeToText,TextToCode辅助)