微信小程序(二)

關于微信小程序三級聯(lián)動之多列選擇器的學習心得與摘抄
有些時候却舀,三級聯(lián)動業(yè)務場景并不只是全國地區(qū)選擇虫几,可能還涉及到自定義分類的三級聯(lián)動,這時就需要使用微信的多列選擇器挽拔。
如果只是一列字段辆脸,或者每次拖動一次都去服務端取,會比較容易篱昔。 如果想一次定義好json,關聯(lián)數(shù)據(jù)相對比較復雜每强,此案例json結構如下:


4276407-6e0a603d52c31256.png

效果如下:


4276407-05e3ff11c8ef5097.png

4276407-170709d81db9adc1.png

實現(xiàn)過程

1.WXML(這是一段微信官方文檔的代碼)

<view class="section">
  <view class="section__title">普通選擇器</view>
  <picker bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
    <view class="picker">
      當前選擇:{{array[index]}}
    </view>
  </picker>

    <picker bindchange="bindPickerChange1" value="{{index}}" range="{{array}}">
    <view class="picker">
      當前選擇:{{array[index]}}
    </view>
  </picker>
</view>

2.js 邏輯部分

// 第一步  data 定義數(shù)據(jù)
ssl:地區(qū)json

//第二步  設置默認三級聯(lián)動數(shù)據(jù)
Onload

//獲取省市區(qū)json
var ssls = this.data.ssl;
//定義對應變量
    var sheng = [];
    var shi = [];
    var qu = [];
    for (var i in ssls) {
      sheng.push(ssls[i].p_name)
      if (i == 0) {
        for (var u in ssls[i].p_city) {
          // console.log(ssls[i].p_city[u].c_name)
          shi.push(ssls[i].p_city[u].c_name)
          for (var j in ssls[i].p_city[u].p_district) {
            // console.log(ssls[i].p_city[u].c_name)
            qu.push(ssls[i].p_city[u].p_district[j].d_name)
          }
        }
      }

    }
    console.log(sheng, shi);
    this.setData({
      multiArray: [sheng, shi, qu]
    });

//第三步:選擇對應的value值改變
  bindMultiPickerChange: function (e) {
    console.log('picker發(fā)送選擇改變,攜帶值為', e.detail.value)
    this.setData({
      multiIndex: e.detail.value
    })
  },

//第四步:下拉拖動選項事件(這里只需要處理第一欄州刽,與第二欄【因為第三欄拖動的時候空执,沒有第四欄關聯(lián)變動了,關于此處講的欄穗椅,請看代碼后圖1-3】)

bindMultiPickerColumnChange: function (e) {
    console.log('修改的列為', e.detail.column, '辨绊,值為', e.detail.value);
    var data = {
      multiArray: this.data.multiArray,
      multiIndex: this.data.multiIndex
    };
    data.multiIndex[e.detail.column] = e.detail.value;
    switch (e.detail.column) {
      case 0:
        this.setData({
          thisSheng: e.detail.value
        })
        //此處是拖動第一欄的時候處理
        var row = this.getCity(e.detail.value);
        data.multiArray[1] = row[0];
        data.multiArray[2] = row[1];

        //此處默認選中第一項
        data.multiIndex[1] = 0;
        data.multiIndex[2] = 0;
        break;
      case 1:
         //此處是拖動第二欄的時候處理
        var row = this.getCity(this.data.thisSheng, e.detail.value);
        console.log(row);
        data.multiArray[2] = row[1];
        data.multiIndex[2] = 0;
        console.log(data.multiIndex);
        break;
    }
    this.setData(data);
  },

關鍵處理函數(shù)

// 獲取城市信息
  getCity: function (x, y = 999, z = 999) {
    console.log("xy", x, y);
    var ssls = this.data.ssl;
    var shi = [];
    var qu = [];
    for (var i in ssls) {
      if (i == x) {
        for (var u in ssls[i].p_city) {
          shi.push(ssls[i].p_city[u].c_name)
          if (u == y) {
            for (var j in ssls[i].p_city[u].p_district) {
              qu.push(ssls[i].p_city[u].p_district[j].d_name)
            }
            break;
          }
          if (y == 999) {
            for (var j in ssls[i].p_city[u].p_district) {
              qu.push(ssls[i].p_city[u].p_district[j].d_name)
            }
          }

        }
        break;
      }
    }
    console.log(shi);
    return [shi, qu];

  },
4276407-be01613c573a790d.png

這樣基本手動實現(xiàn)一次官方的全國地區(qū)選擇功能,只是相比官方更靈活匹表,能添加更多種類型门坷。
工作較忙宣鄙,更新慢-.-

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市默蚌,隨后出現(xiàn)的幾起案子冻晤,更是在濱河造成了極大的恐慌,老刑警劉巖绸吸,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鼻弧,死亡現(xiàn)場離奇詭異,居然都是意外死亡锦茁,警方通過查閱死者的電腦和手機攘轩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來码俩,“玉大人度帮,你說我怎么就攤上這事「宕妫” “怎么了笨篷?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挠铲。 經(jīng)常有香客問我冕屯,道長,這世上最難降的妖魔是什么拂苹? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮痰洒,結果婚禮上瓢棒,老公的妹妹穿的比我還像新娘。我一直安慰自己丘喻,他們只是感情好脯宿,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泉粉,像睡著了一般连霉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嗡靡,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天跺撼,我揣著相機與錄音,去河邊找鬼讨彼。 笑死歉井,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的哈误。 我是一名探鬼主播哩至,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼躏嚎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了菩貌?” 一聲冷哼從身側(cè)響起卢佣,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎箭阶,沒想到半個月后虚茶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡尾膊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年媳危,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冈敛。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡待笑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抓谴,到底是詐尸還是另有隱情暮蹂,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布癌压,位于F島的核電站仰泻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏滩届。R本人自食惡果不足惜集侯,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望帜消。 院中可真熱鬧棠枉,春花似錦、人聲如沸泡挺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娄猫。三九已至贱除,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間媳溺,已是汗流浹背月幌。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留褂删,地道東北人飞醉。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缅帘。 傳聞我的和親對象是個殘疾皇子轴术,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

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