小程序picker組件詳解

一、picker組件介紹

小程序中的picker組件是一種用戶界面組件,它可以讓用戶在一個滾動列表中選擇一個或多個選項。picker組件提供了多種選擇器類型和設置項,以支持靈活的選擇器呈現,為用戶提供更好的體驗。

picker組件是由微信團隊提供的,開發者可以在小程序中直接使用該組件,無需做太多複雜的開發工作。picker組件分為單列選擇器和多列選擇器兩種類型,可以適用於不同場景的應用。

二、picker組件類型

picker組件有兩種類型:單列選擇器和多列選擇器。

1. 單列選擇器

單列選擇器使用一個滾輪列表,用戶可以在滾輪列表中選擇一個選項。單列選擇器用於選擇單個選項,例如選擇省份、城市或日期等。

picker組件的基本使用:
<picker mode="selector" bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
  <view class="picker">{{array[index]}}</view>
</picker>

js文件的基本處理:
Page({
  data: {
    index: 0,
    array: ['美國', '中國', '巴西', '日本']
  },
  bindPickerChange: function (e) {
    console.log('picker發送選擇改變,攜帶值為', e.detail.value)
    this.setData({
      index: e.detail.value
    })
  }
})

2. 多列選擇器

多列選擇器使用多個滾輪列表,用戶可以在每個滾輪列表中選擇一個選項。多列選擇器用於選擇具有關聯性的多個選項,例如選擇省份和城市、年份和月份等。

picker組件的基本使用:
<picker mode="multiSelector" bindchange="bindMultiPickerChange" value="{{[0, 0]}}" range="{{multiArray}}">
  <view class="picker">{{multiArray[0][value[0]]}}</view>
  <view class="picker">{{multiArray[1][value[1]]}}</view>
</picker>

js文件的基本處理:
Page({
  data: {
    multiArray: [['北京市', '上海市', '廣州市', '深圳市'], ['東城區', '西城區', '崇文區', '宣武區']],
    multiIndex: [0, 0]
  },
  bindMultiPickerChange: function (e) {
    console.log('picker發送選擇改變,攜帶值為', e.detail.value)
    this.setData({
      multiIndex: e.detail.value
    })
  }
})

三、picker組件設置項

picker組件提供了多個設置項,以支持更靈活的選擇器樣式和功能。

1. 設置選項值範圍

通過設置range屬性,可以指定picker組件的選項值範圍。

picker組件設置選項值範圍:
<picker mode="selector" bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
  <view class="picker">{{array[index]}}</view>
</picker>

2. 設置默認選項值

通過設置value屬性,可以指定picker組件的默認選項值。

picker組件設置默認選項值:
<picker mode="selector" bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
  <view class="picker">{{array[index]}}</view>
</picker>

3. 設置選項改變事件

通過設置bindchange屬性,可以在選項改變時觸發一個事件處理函數。

picker組件設置選項改變事件:
<picker mode="selector" bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
  <view class="picker">{{array[index]}}</view>
</picker>

js文件的基本處理:
Page({
  data: {
    index: 0,
    array: ['美國', '中國', '巴西', '日本']
  },
  bindPickerChange: function (e) {
    console.log('picker發送選擇改變,攜帶值為', e.detail.value)
    this.setData({
      index: e.detail.value
    })
  }
})

4. 設置滾輪顯示數量

通過設置picker-group組件的height屬性,可以指定picker組件的滾輪顯示數量。

picker-group組件設置滾輪顯示數量:
<picker-group height="160rpx">
  <picker mode="selector" range="{{['100元', '200元', '300元', '400元', '500元']}}" bindchange="bindPickerChange">
    <view class="picker">{{value}}</view>
  </picker>
  <picker mode="selector" range="{{['男', '女']}}" bindchange="bindPickerChange2">
    <view class="picker">{{value}}</view>
  </picker>
</picker-group>

5. 設置滾輪固定位置

通過設置picker組件的animation屬性,可以將picker的滾輪固定到某一位置。

picker組件設置滾輪固定位置:
<picker mode="selector" range="{{['100元', '200元', '300元', '400元', '500元']}}" animation="{{animation}}" bindchange="bindPickerChange">
  <view class="picker">{{value}}</view>
</picker>

js文件的基本處理:
Page({
  data: {
    animation: {}
  },
  bindPickerChange: function (e) {
    console.log('picker發送選擇改變,攜帶值為', e.detail.value)

    var animation = wx.createAnimation({
      duration: 500,
      timingFunction: 'ease-out'
    })

    animation.translateY(-100).step()

    this.setData({
      value: e.detail.value,
      animation: animation.export()
    })
  }
})

四、picker組件應用

picker組件可以應用於不同領域,例如產品訂單、配送地址、預約時間、活動報名等場景。

以預約時間選擇器為例,實現類似日期時間選擇器的功能。

<view class="page__bd page__bd_spacing">
  <view class="weui-cells__title">預約時間
  <picker mode="multiSelector" bindchange="bindMultiPickerChange" value="{{multiIndex}}" range="{{multiArray}}">
    <view class="weui-cells__label">
      {{multiArray[0][multiIndex[0]]}} {{multiArray[1][multiIndex[1]]}}
    </view>
  </picker>
</view>

js文件的基本處理:
Page({
  data: {
    multiArray: [[], []],
    multiIndex: [0, 0]
  },
  onLoad: function () {
    var date = new Date();
    var years = []
    var months = []
    var days = []
    var hours = []
    var minutes = []
    for (var i = date.getFullYear(); i <= date.getFullYear() + 1; i++) {
      years.push(i)
    }
    for (var i = 1; i <= 12; i++) {
      months.push(i)
    }
    for (var i = 1; i <= 31; i++) {
      days.push(i)
    }
    for (var i = 0; i <= 23; i++) {
      hours.push(i)
    }
    for (var i = 0; i <= 59; i++) {
      minutes.push(i)
    }
    this.setData({
      'multiArray[0]': years,
      'multiArray[1]': [months, days, hours, minutes]
    })
  },
  bindMultiPickerChange: function (e) {
    console.log('picker發送選擇改變,攜帶值為:', e.detail.value)
    this.setData({
      multiIndex: e.detail.value
    })
  }
})

五、總結

本文介紹了小程序中的picker組件,包括picker組件的基本介紹、類型、設置項以及應用,希望對開發者在小程序開發中使用picker組件有所幫助。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/312968.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-06 15:17
下一篇 2025-01-06 15:17

相關推薦

  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟體。在VB中,有許多不同的方法可以運行程序,包括編譯器、發布程序以及命令行。在本文中…

    編程 2025-04-29
  • Python一元二次方程求解程序

    本文將詳細闡述Python一元二次方程求解程序的相關知識,為讀者提供全面的程序設計思路和操作方法。 一、方程求解 首先,我們需要了解一元二次方程的求解方法。一元二次方程可以寫作: …

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨著深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟體開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29
  • 微信小程序和Python數據交互完整指南

    本篇文章將從多個方面介紹如何在微信小程序中實現與Python的數據交互。通過本文的學習,您將掌握如何將微信小程序與後台Python代碼結合起來,實現更豐富的功能。 一、概述 微信小…

    編程 2025-04-29

發表回復

登錄後才能評論