vue+element-ui 三级联动的使用及回显发送参数踩坑

示例:

一、使用步骤:

1、下载依赖

npm install element-china-area-data -S

2、在js中引入

import { regionData,CodeToText, TextToCode } from 'element-china-area-data'

3、放入使用

HTML:
<el-cascader class="select"
   :disabled="disabled"
   size="large"
   :options="options"
   v-model="selectedOptions"
   @change="handleChange">
</el-cascader>

!注意,v-model绑定的值必须是options

JS:
data(){
    return{
     options: regionData,//使用中国省市区数组
     selectedOptions: [],//店铺地址数组
     personalForm: 
          {//表单
            lng: "", //经度 && 维度
            lat: "", 
            shopAdressProvince:"", //省市区名称
            shopAdressCity:"",
            adname: "", 
            prcode: "", //省市区code码
            citycode: "", 
            adcode:""
          ,
  }
}
//选择时
handleChange (value) {
// console.log(value)
  if (value[1] != null && value[2] != null) {
      var dz = CodeToText[value[0]] + '/' + CodeToText[value[1]] + '/' + 
CodeToText[value[2]]
  } else {
      if (value[1] != null) {
                  dz = CodeToText[value[0]] + '/' + CodeToText[value[1]]
             } else {
                  dz = CodeToText[value[0]]
             }
        }
  this.personalForm.provinces= CodeToText[this.selectedOptions[0]] //省
  this.personalForm.city= CodeToText[this.selectedOptions[1]]      //市
  this.personalForm.area= CodeToText[this.selectedOptions[2]]      //区
  const str = this.personalForm.provinces + '/' + this.personalForm.city + '/' + this.personalForm.area    // 新建一个字符串处理成后端需要的格式
  this.stationInfo.address = str   // 赋值给要发送的对象 结果:"省/市/区"
},

踩坑(选择城市后组件不显示或者不回显但是能拿到值):

       如果v-model绑定的值直接是需要的数据(例如this.stationInfo.address),那么选择城市后也不能回显,因为v-model绑定的值只有是数组的城市编码才能显示,所以,绑定的是需要是( options: regionData,//使用中国省市区数组)才能显示,如需要汉字,则用CodeToText将城市编码转文字,再处理成后端需要的格式 。

二、修改回显时

  因为后端返回'省/市/区',所以无法回显。拿到res时需要用到TextToCode将城市字符串转为编码再赋值给输入框。

 //转化区域码(拿到res后端返回的数据后)
var addressStr = res.data.data.address
var arr = addressStr.split("/");
var arrCode =TextToCode[arr[0]][arr[1]][arr[2]].code;
this.selectedOptions = arrCode;
console.log('aaaaaaaaaa',this.selectedOptions);

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值