實現(xiàn)省市區(qū)三級聯(lián)動選擇

如何實現(xiàn)三級聯(lián)動選擇,且如何沒有三級時肉微,只顯示兩個選擇框

三級聯(lián)動.png

1.html部分旗闽,帶表單驗證

<a-form-model-item
          v-if="!visible"
          label="請選擇要添加的常用登錄地"
          style="margin-bottom: 0;"
          required
        >
          <div style="display: flex;">
            <!-- 一級選擇 -->
            <a-form-model-item prop="selectResult[0]">
              <a-select
                style="width: 120px"
                :value="form.selectResult[0]"
                @change="handleChinaChange"
                placeholder="請選擇"
              >
                <a-select-option
                  v-for="region in regionChina"
                  :value="region.dis_code"
                  :key="region.dis_code"
                  >{{ region.district_name }}</a-select-option
                >
              </a-select>
            </a-form-model-item>
            <!-- 二級選擇 -->
            <a-form-model-item prop="selectResult[1]">
              <a-select
                style="width: 120px"
                placeholder="請選擇"
                :value="form.selectResult[1]"
                @change="handleProvinceChange"
              >
                <a-select-option
                  v-for="province in provinceData"
                  :value="province.dis_code"
                  :key="province.dis_code"
                  >{{ province.district_name }}</a-select-option
                >
              </a-select>
            </a-form-model-item>
            <!-- 三級選擇 -->
            <a-form-model-item prop="selectResult[2]" v-if="cityData.length">
              <a-select
                style="width: 120px"
                placeholder="請選擇"
                :value="form.selectResult[2]"
                @change="handleCityChange"
              >
                <a-select-option
                  v-for="city in cityData"
                  :value="city.dis_code"
                  :key="city.dis_code"
                >
                  {{ city.district_name }}
                </a-select-option>
              </a-select>
            </a-form-model-item>
          </div>
        </a-form-model-item>

關(guān)于表單驗證的部分酬核,可以在表單驗證的地方進行詳細書名,此處就不做贅述适室,這個地方主要就是使用了三個下拉選擇框嫡意;
在三級選擇框的后面可以看到使用了 v-if="cityData.length" 這個地方使用這個的原因就是因為后端給的數(shù)據(jù)像一些特殊地區(qū),比如臺灣捣辆、香港等地是沒有三級選擇的蔬螟,沒有三級選擇,那么就需要將這個框隱藏汽畴,同時驗證也要通過旧巾。
我在做的時候耸序,由于當(dāng)時看到了后端的數(shù)據(jù)格式,所以這個地方判斷的時候使用的是v-if = "form.selectResult[0]!='1'"鲁猩,因為當(dāng)時給的數(shù)據(jù)是這樣的

一級選擇數(shù)據(jù).png

我知道坎怪,只有一級選擇中國大陸的時候才會有三級選擇,這樣做固然可以實現(xiàn)廓握,但是不利于后期的維護搅窿;另外這個地方為什么不適用v-show?
\color{red}{原因:重點把握v-if和v-show的區(qū)別隙券?}

v-if是通過控制DOM節(jié)點的存在來控制元素是現(xiàn)實還是隱藏的男应;v-show是通過設(shè)置DOM元素的display樣式來進行視覺上的隱藏;
所以這個地方如果使用v-show的話表單驗證就不會通過娱仔。
表單驗證.png

2.js部分

<script>
export default {
  data() {
    return {
      type: "manage",
      editObj: {},
      title: "管理常用登錄地",
      visible: false,
      modalVisible: false,
      confirmLoading: false,
      treeData: [],
      form: {
        selectResult: []
      },
       //驗證規(guī)則
      rules: {
        selectResult: {
          "0": [{ required: true, message: "請選擇區(qū)域", trigger: "change" }],
          "1": [{ required: true, message: "請選擇省", trigger: "change" }],
          "2": [{ required: true, message: "請選擇市", trigger: "change" }]
        },
        log_server: [
          { required: true, message: "請?zhí)砑臃?wù)器", trigger: "change" }
        ]
      },
      regionChina: [],
      provinceData: [],
      cityData: []
    };
  },
  created() {
    this.getFirstData();
  },
  methods: {
    /*===== 獲得大地區(qū)數(shù)據(jù) =====*/
    getFirstData() {
        this.regionChina = result.list || [];
    },
    /*===== 獲得省級城市數(shù)據(jù) =====*/
    getSecondData() {
        this.provinceData = result.list || []沐飘;
    },
    /*===== 獲得市級城市數(shù)據(jù) =====*/
    getThirdData() {
         this.cityData = result.list || [];//請求接口得到,此處未展示請求接口部分的代碼牲迫;
    },
    /*===== 省市區(qū)三級聯(lián)動 =====*/
    handleChinaChange(value) {
      this.provinceData = [];
      this.cityData = [];
      this.form.selectResult.length = 0;
      this.form.selectResult.push(value);
      this.getSecondData();
    },
    handleProvinceChange(value) {
      this.cityData = [];
      this.form.selectResult.length = 1;
      this.form.selectResult.push(value);
      this.getThirdData();
    },
    handleCityChange(value) {
      this.form.selectResult.length = 2;
      this.form.selectResult.push(value);
    },
    /*=====取消操作=====*/
    handleCancel() {
      this.$refs.ruleForm.clearValidate();
      this.provinceData = [];
      this.cityData = [];
      let { modalVisible, form } = this.$options.data();
      Object.assign(this.$data, { modalVisible, form });
    }
  }
};
</script>

這里值得注意的是在取消的時候要將provinceData和cityData的內(nèi)容清空喲(互聯(lián)網(wǎng)是有記憶的耐朴,有的時候清空也是不行的喲所以,網(wǎng)絡(luò)事實切勿輕易站隊)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末恩溅,一起剝皮案震驚了整個濱河市隔箍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脚乡,老刑警劉巖蜒滩,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奶稠,居然都是意外死亡俯艰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門锌订,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竹握,“玉大人,你說我怎么就攤上這事辆飘±卜” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵蜈项,是天一觀的道長芹关。 經(jīng)常有香客問我,道長紧卒,這世上最難降的妖魔是什么侥衬? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上轴总,老公的妹妹穿的比我還像新娘直颅。我一直安慰自己,他們只是感情好怀樟,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布功偿。 她就那樣靜靜地躺著,像睡著了一般漂佩。 火紅的嫁衣襯著肌膚如雪脖含。 梳的紋絲不亂的頭發(fā)上罪塔,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天投蝉,我揣著相機與錄音,去河邊找鬼征堪。 笑死瘩缆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的佃蚜。 我是一名探鬼主播庸娱,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谐算!你這毒婦竟也來了熟尉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤洲脂,失蹤者是張志新(化名)和其女友劉穎斤儿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恐锦,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡往果,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了一铅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陕贮。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖潘飘,靈堂內(nèi)的尸體忽然破棺而出肮之,到底是詐尸還是另有隱情,我是刑警寧澤卜录,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布戈擒,位于F島的核電站,受9級特大地震影響暴凑,放射性物質(zhì)發(fā)生泄漏峦甩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凯傲。 院中可真熱鬧犬辰,春花似錦、人聲如沸冰单。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诫欠。三九已至涵卵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荒叼,已是汗流浹背轿偎。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留被廓,地道東北人坏晦。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像嫁乘,于是被迫代替她去往敵國和親昆婿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359