element cascader 动态增减标单项(省市区)

在开发到cascader联级的时候遇到一些问题,特此记录



循环遍历联级组件



实现页面功能为上图,点击添加可以添加很多个【*代理区域】,这个功能特别好实现,难点在于的是如何和后台交互并且可以实现回显的功能
后台要的值是以逗号区分的一列字符串,可是我们添加多个的时候,前端提交的是数组,那我们就需要坐下数组处理,可是所有的值如果都是逗号区分的话,一会儿回显我们无法区分,所以我们需要更改一下数据格式 
    原有数据        一级,二级,三级,一级,二级,三级
    现有数据        一级,二级,三级;一级,二级,三级

仔细看,我们用 “ ;”来区分是代表相对应的数据,那如果处理

let ids = []; // 定义空数组
this.agentVisibleForm.domains.forEach(ele => { // 循环遍历
    if(Array.isArray(ele.id)) {
        ele.id = ele.id
        ids.push(ele.id.join(",")) // 先以逗号区分并且推到 ids 里
    }
})
ids = ids.join(";") // 拿到之后我们再以 ; 分割

 到这里我们的提交就搞定了,那回显怎么办呢,在编辑的时候,我们需要对于后台返回的值进行处理

// data.regionIds 就是后台返回的值
// 后台返回的格式为 一级,二级,三级;一级,二级
// 需要先把 ; 拆分开

let demo = data.regionIds.split(';')


// 然后再拆分,数组里的值应该为number,转化一下
for(let i = 0; i < demo.length; i++){
 demo[i] = demo[i].split(',').map(Number);
};

进行数据处理完毕后,我们开始赋值,在这里遇到一个问题:

this.agentVisibleForm.domains = demo; // 正常这么赋值就ok了

可是我们在上面组件循环的时候

多了个id,所以应该是

// 给每一个数组加 id 的前缀。
demo.map(i => {
    return{
        id: i
    }
})

至此我们的功能就实现了。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
element cascader 是一个基于 Vue.js 的级联选择器组件,可以实现动态加载省市区功能。 在使用 element cascader 动态加载省市区之前,我们需要先准备好相应的数据。一般来说,省市区数据是以树形结构组织的,每个地区都有一个唯一的识符,以及父级地区的识符来建立层级关系。我们可以将这些地区数据存储在一个数组中,每个元素包含地区的名称、识符以及父级地区的识符。 首先,我们需要在页面中引入 element cascader 组件,并将数据作为 props 传入: ``` <el-cascader :options="options" v-model="selectedAreas"></el-cascader> ``` 在 Vue 实例中,我们需要定义一个数组来保存选中的地区,并且需要定义一个方法来动态加载地区数据。当用户选择某个地区时,我们需要根据该地区的识符来获取该地区的子级地区数据,并将数据添加到 props 的 options 中,实现动态加载省市区的效果。 ``` data() { return { selectedAreas: [], // 保存选中的地区 options: [], // 地区数据 }; }, methods: { loadAreas(selectedOptions) { const targetOption = selectedOptions[selectedOptions.length - 1]; targetOption.loading = true; // 设置加载状态为 true // TODO: 根据 targetOption 中的识符获取子级地区数据,并将数据添加到 targetOption 的 children 中 targetOption.loading = false; // 数据加载完成后设置加载状态为 false }, }, ``` 在 `loadAreas` 方法中,我们可以根据 `targetOption` 中的识符来向后端发送请求,获取子级地区数据。获取到数据后,我们将其添加到 `targetOption` 的 `children` 属性中,并设置 `loading` 状态为 false,表示数据加载完成。 通过以上的操作,我们就可以在使用 element cascader 组件时实现动态加载省市区功能。用户选择某个地区时,组件会根据选择的地区识符动态加载该地区的子级地区数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值