博客地址: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 須要放在監聽器裏,當點擊省級或市級,自動監聽更新市級或區級的列表