微信小程序:省市區(qū)三級聯(lián)動(升級版)

之前搞了一個(gè) 傳送門,缺點(diǎn)明顯尼荆,思索一番左腔,An idea flitted through my mind.

// test.wxml
<view class="container">
    <view class="item">
        <text class="item-name">地址</text>
        <text class="item-content">{{province}} {{city}} {{area}}</text>
        <image class="arrow_left" src="../../images/play.png"></image>
    </view>
    <view style="display:flex;">
        <picker-view indicator-style="height: 50px;" style="width: 100%;height: 150px;text-align: center" value="{{pIndex}}" bindchange="changeProvince2">
            <picker-view-column>
                <view wx:for="{{placeArray}}" wx:key="name" style="line-height: 50px">{{item.name}}</view>
            </picker-view-column>
        </picker-view>
        <picker-view indicator-style="height: 50px;" style="width: 100%;height: 150px;text-align: center" value="{{cIndex}}" bindchange="changeCity2">
            <picker-view-column>
                <view wx:for="{{placeArray[pIndex].city}}" wx:key="name" style="line-height: 50px">{{item.name}}</view>
            </picker-view-column>
        </picker-view>
        <picker-view indicator-style="height: 50px;" style="width: 100%;height: 150px;text-align: center" value="{{aIndex}}" bindchange="changeArea2">
            <picker-view-column>
                <view wx:for="{{placeArray[pIndex].city[cIndex].area}}" wx:key="*this" style="line-height: 50px">{{item}}</view>
            </picker-view-column>
        </picker-view>
    </view>
</view>
//test.js  截取了部分省市區(qū)數(shù)據(jù)
  const placeArray = [
    {
      "name": "北京",
      "city": [{
        "name": "北京",
        "area": ["東城區(qū)", "西城區(qū)", "崇文區(qū)", "宣武區(qū)", "朝陽區(qū)", "豐臺區(qū)", "石景山區(qū)", "海淀區(qū)", "門頭溝區(qū)", "房山區(qū)", "通州區(qū)", "順義區(qū)", "昌平區(qū)", "大興區(qū)", "平谷區(qū)", "懷柔區(qū)", "密云縣", "延慶縣"]
      }]
    },

    {
      "name": "天津",
      "city": [{
        "name": "天津",
        "area": ["和平區(qū)", "河?xùn)|區(qū)", "河西區(qū)", "南開區(qū)", "河北區(qū)", "紅橋區(qū)", "塘沽區(qū)", "漢沽區(qū)", "大港區(qū)", "東麗區(qū)", "西青區(qū)", "津南區(qū)", "北辰區(qū)", "武清區(qū)", "寶坻區(qū)", "寧河縣", "靜海縣", "薊  縣"]
      }]
    },

    {
      "name": "河北",
      "city": [

        {
          "name": "石家莊",
          "area": ["長安區(qū)", "橋東區(qū)", "橋西區(qū)", "新華區(qū)", "郊  區(qū)", "井陘礦區(qū)", "井陘縣", "正定縣", "欒城縣", "行唐縣", "靈壽縣", "高邑縣", "深澤縣", "贊皇縣", "無極縣", "平山縣", "元氏縣", "趙  縣", "辛集市", "藁", "晉州市", "新樂市", "鹿泉市"]
        },

        {
          "name": "唐山",
          "area": ["路南區(qū)", "路北區(qū)", "古冶區(qū)", "開平區(qū)", "新  區(qū)", "豐潤縣", "灤  縣", "灤南縣", "樂亭縣", "遷西縣", "玉田縣", "唐和比澹縣", "遵化市", "豐南市", "遷安市"]
        },

        {
          "name": "秦皇島",
          "area": ["海港區(qū)", "山海關(guān)區(qū)", "北戴河區(qū)", "青龍滿族自治縣", "昌黎縣", "撫寧縣", "盧龍縣"]
        },

        {
          "name": "邯鄲",
          "area": ["邯山區(qū)", "叢臺區(qū)", "復(fù)興區(qū)", "峰峰礦區(qū)", "邯鄲縣", "臨漳縣", "成安縣", "大名縣", "涉  縣", "磁  縣", "肥鄉(xiāng)縣", "永年縣", "邱  縣", "雞澤縣", "廣平縣", "館陶縣", "魏  縣", "曲周縣", "武安市"]
        },

        {
          "name": "邢臺",
          "area": ["橋東區(qū)", "橋西區(qū)", "邢臺縣", "臨城縣", "內(nèi)丘縣", "柏鄉(xiāng)縣", "隆堯縣", "任  縣", "南和縣", "寧晉縣", "巨鹿縣", "新河縣", "廣宗縣", "平鄉(xiāng)縣", "威  縣", "清河縣", "臨西縣", "南宮市", "沙河市"]
        },

        {
          "name": "保定",
          "area": ["新市區(qū)", "北市區(qū)", "南市區(qū)", "滿城縣", "清苑縣", "淶水縣", "阜平縣", "徐水縣", "定興縣", "唐  縣", "高陽縣", "容城縣", "淶源縣", "望都縣", "安新縣", "易  縣", "曲陽縣", "蠡  縣", "順平縣", "博野", "雄縣", "涿州市", "定州市", "安國市", "高碑店市"]
        },

        {
          "name": "張家口",
          "area": ["橋東區(qū)", "橋西區(qū)", "宣化區(qū)", "下花園區(qū)", "宣化縣", "張北縣", "康币貉縣", "沽源縣", "尚義縣", "蔚  縣", "陽原縣", "懷安縣", "萬全縣", "懷來縣", "涿鹿縣", "赤城縣", "崇禮縣"]
        },

        {
          "name": "承德",
          "area": ["雙橋區(qū)", "雙灤區(qū)", "鷹手營子礦區(qū)", "承德縣", "興隆縣", "平泉縣", "灤平縣", "隆化縣", "豐寧滿族自治縣", "寬城滿族自治縣", "圍場滿族蒙古族自治縣"]
        },

        {
          "name": "滄州",
          "area": ["新華區(qū)", "運(yùn)河區(qū)", "滄  縣", "青  縣", "東光縣", "海興縣", "鹽山縣", "肅寧縣", "南皮縣", "吳橋縣", "獻(xiàn)  縣", "孟村回族自治縣", "泊頭市", "任丘市", "黃驊市", "河間市"]
        },

        {
          "name": "廊坊",
          "area": ["安次區(qū)", "固安縣", "永清縣", "香河縣", "大城縣", "文安縣", "大廠回族自治縣", "霸州市", "三河市"]
        },

        {
          "name": "衡水",
          "area": ["桃城區(qū)", "棗強(qiáng)縣", "武邑縣", "武強(qiáng)縣", "饒陽縣", "安平縣", "故城縣", "景  縣", "阜城縣", "冀州市", "深州市"]
        }

      ]
    }];

Page({
  data:{
    placeArray: placeArray,
    province: placeArray[0].name,
    pIndex: 0,
    city: placeArray[0].city[0].name,
    cIndex: 0,
    area: placeArray[0].city[0].area[0],
    aIndex: 0
  },
   changeProvince2: function(e){
    const val = e.detail.value
    this.setData({
      pIndex: val,
      cIndex: 0,
      aIndex: 0,
      province: placeArray[val].name,
      city: placeArray[val].city[0].name,
      area: placeArray[val].city[0].area[0]
    })
  },
  changeCity2: function(e){
    const val = e.detail.value
    this.setData({
      cIndex: val,
      aIndex: 0,
      city: placeArray[this.data.pIndex].city[val].name,
      area: placeArray[this.data.pIndex].city[val].area[0]
    })
  },
  changeArea2: function(e){
    const val = e.detail.value
    this.setData({
      aIndex: val,
      area: placeArray[this.data.pIndex].city[this.data.cIndex].area[val]
    })
  },
})

之前的問題省市改變后,后面的不滾動到最頂端巧还。既然更改數(shù)據(jù)無法實(shí)現(xiàn)鞭莽,那干脆重新渲染。
效果如下:

省市區(qū)三級聯(lián)動.gif

代碼量減少了麸祷,效果也完美實(shí)現(xiàn)澎怒,nice!
歡迎拍磚阶牍,有更好的方法還請留言丹拯,共同進(jìn)步,轉(zhuǎn)載請注明出處荸恕!_

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市死相,隨后出現(xiàn)的幾起案子融求,更是在濱河造成了極大的恐慌,老刑警劉巖算撮,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件生宛,死亡現(xiàn)場離奇詭異,居然都是意外死亡肮柜,警方通過查閱死者的電腦和手機(jī)陷舅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來审洞,“玉大人莱睁,你說我怎么就攤上這事待讳。” “怎么了仰剿?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵创淡,是天一觀的道長。 經(jīng)常有香客問我南吮,道長琳彩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任部凑,我火速辦了婚禮露乏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涂邀。我一直安慰自己瘟仿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布必孤。 她就那樣靜靜地躺著猾骡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪敷搪。 梳的紋絲不亂的頭發(fā)上兴想,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機(jī)與錄音赡勘,去河邊找鬼嫂便。 笑死,一個(gè)胖子當(dāng)著我的面吹牛闸与,可吹牛的內(nèi)容都是我干的毙替。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼践樱,長吁一口氣:“原來是場噩夢啊……” “哼厂画!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拷邢,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤袱院,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后瞭稼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忽洛,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年环肘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了欲虚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悔雹,死狀恐怖复哆,靈堂內(nèi)的尸體忽然破棺而出欣喧,到底是詐尸還是另有隱情,我是刑警寧澤寂恬,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布续誉,位于F島的核電站,受9級特大地震影響初肉,放射性物質(zhì)發(fā)生泄漏酷鸦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一牙咏、第九天 我趴在偏房一處隱蔽的房頂上張望臼隔。 院中可真熱鬧,春花似錦妄壶、人聲如沸摔握。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氨淌。三九已至,卻和暖如春伊磺,著一層夾襖步出監(jiān)牢的瞬間盛正,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工屑埋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豪筝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓摘能,卻偏偏與公主長得像续崖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子团搞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容