Skip to content

PickerModal 数值选择

数值/小数弹窗选择组件。

引入

组件位置

/main/pages/component/pickerModal/index

app.jsonindex.json 中引入组件:

json
"usingComponents": {
  "pickerModal": "/main/pages/component/pickerModal/index"
}

代码演示

基础用法

xml
<pickerModal 
  is-show-modal="{{ isShow }}" 
  title="体重选择"
  min="{{ 40 }}"
  max="{{ 150 }}"
  unit="kg"
  default-value="{{ 65.0 }}"
  bind:confirm="onConfirm"
  bind:close="onClose"
/>
javascript
Page({
  data: {
    isShow: true
  },
  onConfirm(e) {
    console.log('选择的值:', e.detail.value); // 比如 65.5
  },
  onClose() {
    this.setData({ isShow: false });
  }
});

API

Props

参数说明类型默认值
is-show-modal是否展示弹窗booleanfalse
title弹窗标题string数值选择
type数值类型,可选值为 decimal (一位小数), integer (整数)stringdecimal
min最小数值number1
max最大数值(达到 max 时小数位锁定为 .0)number5
unit数值单位string-
prefix左侧前缀文字string-
is-reverse数值数组是否倒序排列booleanfalse
default-value默认选中值number1.0

Events

事件名说明回调参数
confirm点击确定按钮时触发{ value: number }
close点击取消按钮或遮罩层时触发-

内部逻辑说明

  1. 自动校准:组件在显示时会根据 default-value 自动计算并滚动到对应位置,并确保值在 minmax 之间。
  2. 滚动保护:内部维护 isPicking 状态,防止在选择器未停止滚动时点击确认。
  3. 小数联动:在 decimal 模式下,若整数位选中 max,小数位数组会动态变更为 [0] 以符合逻辑。
  4. 动态更新:支持 minmax 属性的动态监听,属性变化时会自动重新初始化数据。