博客地址:https://ainyi.com/23git
例如: 已选择:广东省广州市荔湾区 点击加入:广东省广州市 最后显示:广东省广州市 广州市已被选择,对应市级的区将不显示,只显示对应的市 同理:选择广东省,也将下面已选择的全部的市或区合并成一个省级,只显示这个省级
省级 transfer、市级 transfer、区级 transfergithub
父组件从数据中获取省级数据传递到子组件 transfer 展现出来。数组
当选中的某个省,则传递对应省级 id 到父组件,根据 id 查找对应的市级并过滤,而且使用 ref 控制市级的 transfer 组件的 father 属性,就是在市级 transfer 组件里也有对应的省级对象。spa
多选状况,只保留最后选择的父级(省级/市级)查找出对应的子级(市级/区级)设计
市级和省级组件的 father 对象是 {id:"", text:""}code
市级组件的 father 保存着省级的 id 和名称。对象
区级组件的 father 保存着省市的 id 和名称(以-分割,如:{id:"10001-100145815", text:"广东省-河源市"})blog
省市区都分别设置一个过滤数组,用来过滤已选的区域get
省级直接点击添加选中的省份,直接传递该省的对象进已选数组。并将选择的省级 id 添加进省级过滤数组。而后判断已选区域中是否有该省级一下的市级,有则删除,合并成一个省级,并在省级过滤数组删除掉这个市级 id。博客
市级点击添加选中的城市,选中的城市对象数组,遍历拼接上当前的 father 对象,最终保存的形式:{id: "10005-545132025515", text: "广东省-广州市"},也要判断当前市级下是否有对应的区级,有则合并,并在区级过滤数组删除这个区级 id。
区级点击添加选中的区域,拼接上当前的 father 对象,最终的保存的形式:{id:"10004-15613610-25156165156321", text:"广东省-河源市-龙川县"},
子组件 transfer 中区域数据 districtList 须要放在监听器里,当点击省级或市级,自动监听更新市级或区级的列表