vue項(xiàng)目中的element-ui地區(qū)級(jí)聯(lián)選擇器

在項(xiàng)目開發(fā)過程中遇到了需要用到element-ui的el-cascader地區(qū)級(jí)聯(lián)選擇的問題,做個(gè)筆記記錄下。

1.資源文件引入

<script
      type="text/javascript"
      src="/static/test/lib/js/vue/vue-resource.js"
    ></script>

2.新建選擇器

<el-cascader
      placeholder="請(qǐng)點(diǎn)擊選擇地址"
      :options="options"
      v-model="selectedOptions"
      @change="handleChange"
       clearable
></el-cascader>

3.參數(shù)定義

data() {
    return {
      options: [],
      selectedOptions: [],
      cityArr: [], //城市列表
      areaArr: [], //區(qū)縣列表
      province: "", //省
      city: "", //市
      area: "", // 區(qū)縣,
      provinceCityArea: "", //選擇器選擇的省市區(qū)
    };
  },

4.地區(qū)初始化(注:districts.json文件為全國區(qū)劃編碼的JSON對(duì)象,獲取鏈接在文末)

initDistPicker() {
      console.log("initDistrictsPicker");
      let self = this;
      this.$http.get("/static/js/districts.json").then(function(respones) {
        console.log("respones==>", respones);
        let distData = respones.data;
        let options = [];
        // 省
        for (var provinceKy in distData["100000"]) {
          let optProvinceItem = {
            value: provinceKy,
            label: distData["100000"][provinceKy]
          };
          if (distData[provinceKy]) {
            // 市
            for (var cityKy in distData[provinceKy]) {
              optProvinceItem.children = optProvinceItem.children
                ? optProvinceItem.children
                : [];
              let optCityItem = {
                value: cityKy,
                label: distData[provinceKy][cityKy]
              };
              if (distData[cityKy]) {
                // 區(qū)
                for (var areaKy in distData[cityKy]) {
                  optCityItem.children = optCityItem.children
                    ? optCityItem.children
                    : [];
                  let optAreaItem = {
                    value: areaKy,
                    label: distData[cityKy][areaKy]
                  };
                  optCityItem.children.push(optAreaItem);
                }
              }
              optProvinceItem.children.push(optCityItem);
            }
          }
          options.push(optProvinceItem);
        }
        self.distData = distData;
        self.options = options;
      });
    }

5.選擇器地區(qū)選擇觸發(fā)方法

//選擇地區(qū)
    handleChange(value) {
      let self = this;
      console.log("value=>", value);
      //獲取省名
      self.options.map((item, index) => {
        if (item.value == value[0]) {
          self.cityArr = item.children; //存儲(chǔ)城市列表
          self.province = item.label;
        }
      });
      //獲取市名
      self.cityArr.map((item, index) => {
        if (item.value == value[1]) {
          self.areaArr = item.children; //存儲(chǔ)區(qū)縣列表
          self.city = item.label;
        }
      });
      //獲取區(qū)縣名
      self.areaArr.map((item, index) => {
        if (item.value == value[2]) {
          self.area = item.label;
        }
      });
      self.provinceCityArea = self.province + self.city + self.area;
      console.log("self.provinceCityArea", self.provinceCityArea);
    },

6.districts.json文件下載鏈接
阿里云盤鏈接:https://www.aliyundrive.com/s/YZHNnFAqsmb

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容