vue三级联动加编码

废话不说,直接上代码:

                              <div class="edit_box_item">
                                  <label>所在地区</label>
                                  <el-select
                                    v-model="province_code"
                                    @change="changeProvince(province_code)"
                                    placeholder="省">
                                    <el-option
                                        v-for="item in provinceList"
                                        :key="item.value"
                                        :label="item.name"
                                        :value="item.value">
                                    </el-option>
                                  </el-select>
                                  <el-select
                                      v-model="city_code"
                                      @change="changeCity(city_code)"
                                      placeholder="市">
                                      <el-option
                                          v-for="item in cityOptions"
                                          :key="item.value"
                                          :label="item.name"
                                          :value="item.value">
                                      </el-option>
                                  </el-select>
                                  <el-select
                                      v-model="country_code"
                                      @change="changeOrigin"
                                      placeholder="区/县">
                                      <el-option
                                          v-for="item in originOptions"
                                          :key="item.value"
                                          :label="item.name"
                                          :value="item.value">
                                      </el-option>
                                  </el-select>
                                </div>

js

先引入js三级联动
import { mapdata } from "../../assets/js/map";



data(){
    return {
      provinceList: [], // 省列表
      cityOptions: [], // 市列表
      originOptions: [], // 区列表
    }
},
mounted(){
this._getJsonData();
},
methods: {
// 选择省
    changeProvince(val) {
      this.cityOptions = [];
      this.getAllList.forEach(data => {
        if (val == data.parent) {
          this.cityOptions.push(data);
        }
      });
      this.city_code = this.cityOptions[0].value;
      this.changeCity(this.city_code);
    },
    // 选择市
    changeCity(val) {
      this.originOptions = [];
      this.getAllList.forEach(data => {
        if (val == data.parent) {
          this.originOptions.push(data);
        }
      });
      this.country_code = this.originOptions[0].value;
      this.changeOrigin(this.country_code);
    },
    // 选择区
    changeOrigin(val) {},
    _getJsonData() {

          this.getAllList = mapdata;
          this.getAllList.forEach(data => {
            if (!data.parent) {
              this.provinceList.push(data);
            }
          });

          if (this.$route.query.editData) {
            this.editData = this.$route.query.editData;
            this.linkman = this.editData.linkman;
            this.contact = this.editData.contact;
            this.address_detail = this.editData.address_detail;
            this.default = this.editData.default;
            if (this.default == 1) {
              this.switchvalue = true;
            } else {
              this.switchvalue = false;
            }
            this.province_code = String(this.editData.province_code);
            this.city_code = String(this.editData.city_code);
            this.getAllList.forEach(data => {
              if (this.province_code == data.parent) {
                this.cityOptions.push(data);
              }
              if (this.city_code == data.parent) {
                this.originOptions.push(data);
              }
            });
            this.country_code = String(this.editData.country_code);
            this.add_lat = this.editData.add_lat;
            this.add_lon = this.editData.add_lon;
            this.tolnglat = [this.add_lon, this.add_lat];
          }
        

     
    },
}

export const mapdata = [{

        "name": "北京市",

        "value": "110000"

    },

    {

        "name": "天津市",

        "value": "120000"

    }

]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue三级联动下拉菜单是指一个三级级联的下拉菜单实现,其中每个层级的选项列表将随着前面选择的选项而动态更新。 实现Vue三级联动下拉菜单的步骤如下: 1. 定义绑定数据:首先需要定义三个数据对象,即第一级选项列表、第二级选项列表和第三级选项列表,以及他们的初始值。这些数据对象将通过Vue的数据绑定机制与前端界面绑定。 2. 实现选项列表的动态更新:当用户选择一级选项时,需要根据该选项对应的规则获取二级选项列表。同样的,当用户选择二级选项时,需要根据该选项对应的规则获取三级选项列表。这一步需要结合Vue的computed属性和watch机制实现。 3. 绑定前端交互事件:通过v-on指令将用户选择事件与Vue的方法绑定。当用户选择一级选项时将触发与该数据对象绑定的方法,在该方法中更新二级选项列表并清空三级选项列表。当用户选择二级选项时,将触发与该数据对象绑定的方法,在该方法中更新三级选项列表。 4. 前端界面的渲染:根据Vue的数据绑定机制,当数据对象改变时,前端界面上的内容也要相应地改变。因此,需要使用v-for指令结合绑定的数据对象遍历选项列表,并使用v-model指令将用户选择的选项与对应数据对象绑定。 总之,Vue三级联动下拉菜单是一种方便实用的前端交互方式,能够让用户在选择选项时更快速和准确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值