小程序:底部彈起的滾動(dòng)選擇器(picker)

代碼Github地址

一. 說(shuō)明

從底部彈起的滾動(dòng)選擇器,現(xiàn)支持五種選擇器棚唆,通過(guò)mode來(lái)區(qū)分暇赤,分別是普通選擇器,多列選擇器宵凌,時(shí)間選擇器鞋囊,日期選擇器,省市區(qū)選擇器瞎惫,默認(rèn)是普通選擇器溜腐。

1. 普通選擇器:mode = selector
屬性名 類(lèi)型 默認(rèn)值 說(shuō)明
range Array / Object Array [] range是該選擇器的選項(xiàng)內(nèi)容译株。mode為 普通選擇器 或 多列選擇器 時(shí),range有效挺益。
range-key String 當(dāng) range 是一個(gè) Object Array 時(shí)歉糜,通過(guò) range-key 來(lái)指定 Object 中 key 的值作為選擇器顯示內(nèi)容
value Number 0 表示選擇了 range數(shù)組 中的第幾個(gè)(下標(biāo)從 0 開(kāi)始)
bindchange EventHandle 滾動(dòng)選中時(shí)觸發(fā) change 事件,event.detail = {value: value}
disabled Boolean false 是否禁用
bindcancel EventHandle 取消選擇或點(diǎn)遮罩層收起 picker 時(shí)觸發(fā)
// wxml
  <!-- 普通選擇器 -->
  <view class="picker-container">
    <text>普通選擇器(字符串?dāng)?shù)組數(shù)據(jù)):mode = selector</text>
    <picker class="picker" mode="selector" range="{{array}}" value="{{index}}" bindchange="bindPickerChange" bindcancel="cancel">
      <view class="picker">
        當(dāng)前選擇:{{array[index]}}
      </view>
    </picker>
  </view>

  <view class="picker-container">
    <text>普通選擇器(對(duì)象數(shù)組數(shù)據(jù)):mode = selector</text>
    <picker class="picker" mode="selector" range="{{objectArray}}" range-key="name" value="{{index}}" bindchange="bindPickerChange">
      <view class="picker">
        當(dāng)前選擇:{{objectArray[index].name}}
      </view>
    </picker>
  </view>

// wxss
.picker-container {
  text-align: center;
  margin-top: 20px;
  background-color: yellow;
  font-size: 40rpx;
}

.picker {
  margin-left: 10%;
  margin-right: 10%;
  background-color: orange;
}

// js
  data: {
    // 普通選擇器
    array: ['蘋(píng)果', '橘子', '香蕉', '西紅柿'],  // 字符串?dāng)?shù)組
    index: 1,  // 默認(rèn)選中第幾行
    objectArray: [    // 對(duì)象數(shù)組
      { id: 0, name: '蘋(píng)果' },
      { id: 1, name: '橘子' },
      { id: 2, name: '香蕉' },
      { id: 3, name: '西紅柿'}
    ],
 }望众,

  bindPickerChange: function (event) {
    console.log('picker發(fā)送選擇改變匪补,攜帶值為', event.detail.value)
    this.setData({
      index: event.detail.value
    })
  },
  cancel: function (event) {
    console.log("取消了");
  },
2. 普通選擇器:mode = multiSelector
屬性名 類(lèi)型 默認(rèn)值 說(shuō)明
range 二維Array / 二維Object Array [] mode為 selector 或 multiSelector 時(shí),range 有效烂翰。二維數(shù)組夯缺,長(zhǎng)度表示多少列,數(shù)組的每項(xiàng)表示每列的數(shù)據(jù)甘耿,如[["a","b"], ["c","d"]]
range-key String 當(dāng) range 是一個(gè) 二維Object Array 時(shí)踊兜,通過(guò) range-key 來(lái)指定 Object 中 key 的值作為選擇器顯示內(nèi)容
value Array [] value 每一項(xiàng)的值表示選擇了 range 對(duì)應(yīng)項(xiàng)中的第幾個(gè)(下標(biāo)從 0 開(kāi)始)
bindchange EventHandle value 改變時(shí)觸發(fā) change 事件,event.detail = {value: value}
bindcolumnchange EventHandle 某一列的值改變時(shí)觸發(fā) columnchange 事件棵里,event.detail = {column: column, value: value}润文,column 的值表示改變了第幾列(下標(biāo)從0開(kāi)始),value 的值表示變更值的下標(biāo)
bindcancel EventHandle 取消選擇時(shí)觸發(fā)
disabled Boolean false 是否禁用
// wxml
  <!-- 多列選擇器 -->
  <view class="picker-container">
    <text>多列選擇器(二維數(shù)組) :mode = multiSelector</text>
    <picker class="picker" mode="multiSelector" range="{{multiArray}}" value="{{multiIndex}}" bindchange="multiBindchange">
      <view class="picker">
        當(dāng)前選擇:{{multiArray[0][multiIndex[0]]}}殿怜,{{multiArray[1][multiIndex[1]]}},{{multiArray[2][multiIndex[2]]}}
      </view>
    </picker>
  </view>

// wxss
.picker-container {
  text-align: center;
  margin-top: 20px;
  background-color: yellow;
  font-size: 40rpx;
}

.picker {
  margin-left: 10%;
  margin-right: 10%;
  background-color: orange;
}

// js
  data: {
    multiArray: [['無(wú)脊柱動(dòng)物', '脊柱動(dòng)物'], ['扁性動(dòng)物', '線形動(dòng)物', '環(huán)節(jié)動(dòng)物', '軟體動(dòng)物', '節(jié)肢動(dòng)物'], ['豬肉絳蟲(chóng)', '吸血蟲(chóng)']],
    multiIndex: [0, 1, 2],
  },
  multiBindchange: function (event) {
    console.log('picker發(fā)送選擇改變曙砂,攜帶值為', event.detail.value)
    this.setData({
      multiIndex: [event.detail.value[0], event.detail.value[1], event.detail.value[2]]
    })
  },
  multiPickerColumnChange: function (e) {
    console.log('修改的列為', e.detail.column, '头谜,值為', e.detail.value);
  },

3. 時(shí)間選擇器:mode = time
屬性名 類(lèi)型 默認(rèn)值 說(shuō)明
value String 表示選中的時(shí)間,格式為"hh:mm"
start String 表示有效時(shí)間范圍的開(kāi)始鸠澈,字符串格式為"hh:mm"
end String 表示有效時(shí)間范圍的結(jié)束柱告,字符串格式為"hh:mm"
bindchange EventHandle value 改變時(shí)觸發(fā) change 事件,event.detail = {value: value}
bindcancel EventHandle 取消選擇時(shí)觸發(fā)
disabled Boolean false 是否禁用
// wxml
  <!-- 時(shí)間選擇器 -->
  <view class="picker-container">
    <text>時(shí)間選擇器:mode = time</text>
    <picker class="picker" mode="time" value="{{timeValue}}" start="{{start}}" end="{{end}}" bindchange="timeChange">
      <view class="picker">
        當(dāng)前選擇: {{timeValue}}
      </view>
    </picker>
  </view>

 // wxss
.picker-container {
  text-align: center;
  margin-top: 20px;
  background-color: yellow;
  font-size: 40rpx;
}

.picker {
  margin-left: 10%;
  margin-right: 10%;
  background-color: orange;
}

// js 
  data: {
    timeValue: "12:00",  // 選中的時(shí)間
    start: "00:00", // 開(kāi)始時(shí)間
    end: "24:00",
  },

  timeChange: function (event) {
    let time = event.detail.value;

    console.log(event);
    this.setData({
      timeValue: time
    });
  },
4. 日期選擇器:mode = date
屬性名 類(lèi)型 默認(rèn)值 說(shuō)明
value String 0 表示選中的日期笑陈,格式為"YYYY-MM-DD"
start String 表示有效日期范圍的開(kāi)始际度,字符串格式為"YYYY-MM-DD"
end String 表示有效日期范圍的結(jié)束,字符串格式為"YYYY-MM-DD"
fields String day 有效值 year,month,day涵妥,表示選擇器的粒度
bindchange EventHandle value 改變時(shí)觸發(fā) change 事件乖菱,event.detail = {value: value}
bindcancel EventHandle 取消選擇時(shí)觸發(fā)
disabled Boolean false 是否禁用
// wxml
  <!-- 日期選擇器 -->
  <view class="picker-container">
    <text>日期選擇器:mode = date</text>
    <picker class="picker" fields="month" mode="date" value="{{dateValue}}" start="{{dateStart}}" end="{{dateEnd}}" bindchange="dateChange">
      <view class="picker">
        當(dāng)前選擇: {{dateValue}}
      </view>
    </picker>
  </view>

// js
.picker-container {
  text-align: center;
  margin-top: 20px;
  background-color: yellow;
  font-size: 40rpx;
}

.picker {
  margin-left: 10%;
  margin-right: 10%;
  background-color: orange;
}

// js 
data : {
    dateValue: "2018-06-21",   // 日期選中時(shí)間
    dateStart: "2018-01-01",   // 日期開(kāi)始時(shí)間
    dateEnd: "2018-12-30",     // 日期結(jié)束時(shí)間
  },
  dateChange: function (event) {
    let date = event.detail.value;

    console.log(event);
    this.setData({
      dateValue: date
    });
  },
5. 地區(qū)選擇器:mode = region
屬性名 類(lèi)型 默認(rèn)值 說(shuō)明
value Array [] 表示選中的省市區(qū),默認(rèn)選中每一列的第一個(gè)值
custom-item String 可為每一列的頂部添加一個(gè)自定義的項(xiàng)
bindchange EventHandle value 改變時(shí)觸發(fā) change 事件蓬网,event.detail = {value: value}
bindcancel EventHandle 取消選擇時(shí)觸發(fā)
disabled Boolean false 是否禁用
// wxml
  <!-- 省市區(qū)選擇器 -->
  <view class="picker-container">
    <text>省市區(qū)選擇器:mode = region</text>
    <picker class="picker" mode="region" value="{{regionValue}}" custom-item="{{custom}}" bindchange="regionChange">
      <view class="picker">
        當(dāng)前選擇: {{regionValue}}
      </view>
    </picker>
  </view>

// wxss
.picker-container {
  text-align: center;
  margin-top: 20px;
  background-color: yellow;
  font-size: 40rpx;
}

.picker {
  margin-left: 10%;
  margin-right: 10%;
  background-color: orange;
}

// js 
data : {
    regionValue: ["山東省","棗莊市","滕州市"],  // 默認(rèn)選中窒所,不填或者空,就默認(rèn)第一個(gè)
    custom : "全部",
},

  regionChange: function (event) {
    let region = event.detail.value;

    console.log(event);
    this.setData({
      regionValue: region
    });
  },
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帆锋,一起剝皮案震驚了整個(gè)濱河市吵取,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锯厢,老刑警劉巖皮官,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脯倒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡捺氢,警方通過(guò)查閱死者的電腦和手機(jī)盔憨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)讯沈,“玉大人郁岩,你說(shuō)我怎么就攤上這事∪焙荩” “怎么了问慎?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)挤茄。 經(jīng)常有香客問(wèn)我如叼,道長(zhǎng),這世上最難降的妖魔是什么穷劈? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任笼恰,我火速辦了婚禮,結(jié)果婚禮上歇终,老公的妹妹穿的比我還像新娘社证。我一直安慰自己,他們只是感情好评凝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布追葡。 她就那樣靜靜地躺著,像睡著了一般奕短。 火紅的嫁衣襯著肌膚如雪宜肉。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天翎碑,我揣著相機(jī)與錄音谬返,去河邊找鬼。 笑死日杈,一個(gè)胖子當(dāng)著我的面吹牛遣铝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播达椰,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼翰蠢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了啰劲?” 一聲冷哼從身側(cè)響起梁沧,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝇裤,沒(méi)想到半個(gè)月后廷支,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體频鉴,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年恋拍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垛孔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡施敢,死狀恐怖周荐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情僵娃,我是刑警寧澤概作,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站默怨,受9級(jí)特大地震影響讯榕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜匙睹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一愚屁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧痕檬,春花似錦霎槐、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至改淑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浴讯,已是汗流浹背朵夏。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留榆纽,地道東北人仰猖。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像奈籽,于是被迫代替她去往敵國(guó)和親饥侵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,126評(píng)論 25 707
  • 1衣屏、通過(guò)CocoaPods安裝項(xiàng)目名稱(chēng)項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,980評(píng)論 3 119
  • 參考周莫煩的視頻課程 強(qiáng)化學(xué)習(xí)是非監(jiān)督學(xué)習(xí)的例子 躏升,只給行為打分,機(jī)器自己想辦法提高分?jǐn)?shù) 機(jī)器自動(dòng)學(xué)習(xí)避開(kāi)低分區(qū) ...
    重新出發(fā)_砥礪前行閱讀 694評(píng)論 0 0
  • 文/冰雨璇韻 2018年3月3日 星期六 晴 我從來(lái)都是一個(gè)很注重儀式感的人一睁,不論在學(xué)習(xí)上,還是生活里佃却。 曾經(jīng)與三...
    冰雨璇韻閱讀 598評(píng)論 0 7
  • 這段時(shí)間很火的一步動(dòng)畫(huà)電影《尋夢(mèng)環(huán)游記》者吁,它的英文名是《Coco》,估計(jì)很多人已經(jīng)看過(guò)這部電影了饲帅,在被朋友...
    幽蘭茶屋閱讀 261評(píng)論 0 1