V1.0.0
Skip to content

WSlider 组件

滑块组件,基于 WinDesignNext Slider 封装,用于在数值区间内通过拖动选取值,支持单值与范围模式,以及 modelValue 数据绑定和 action 事件响应。

基础用法

API

属性类型默认值说明
componentstringWSlider组件类型(必填)
modelValueDataBindingValue0当前值,单值为数字,范围模式为数组
minnumber | DataBindingValue0最小值
maxnumber | DataBindingValue100最大值
stepnumber | DataBindingValue1步长
disabledbooleanfalse是否禁用
rangebooleanfalse是否为范围选择
showInputbooleanfalse是否显示输入框
showInputControlsbooleantrue输入框是否显示加减按钮
showStopsbooleanfalse是否显示步长间断点
showTooltipbooleantrue是否显示 tooltip
verticalbooleanfalse是否竖向模式
heightstring-垂直模式高度
sizestringdefault尺寸
marksobject-刻度标记
rangeStartLabelstring-范围模式左侧标签
rangeEndLabelstring-范围模式右侧标签
actionAction-值变化事件

path 支持说明

通用绑定格式见 path 数据绑定速查

属性path 支持说明
modelValue滑块值双向绑定(单值或数组)
min动态最小值
max动态最大值
step动态步长
action.event.context[].value事件上下文可引用 dataModel
marks / range / showInput静态配置;动态变更请用 updateProp

modelValue 数据绑定

单值模式:

json
{
  "id": "slider_pain",
  "component": "WSlider",
  "min": 0,
  "max": 10,
  "modelValue": { "path": "/painLevel" }
}

范围模式:

json
{
  "id": "slider_dose",
  "component": "WSlider",
  "range": true,
  "min": 0,
  "max": 100,
  "modelValue": { "path": "/doseRange" }
}

配合 updateDataModel 设置初始值:

json
{
  "version": "v0.9",
  "updateDataModel": {
    "surfaceId": "main",
    "path": "/",
    "value": {
      "painLevel": 3,
      "doseRange": [20, 60]
    }
  }
}

action 定义

滑块值变化时触发,默认 type 为 change

json
{
  "action": {
    "event": {
      "name": "onPainLevelChange",
      "type": "change",
      "context": [{ "key": "painLevel", "value": { "path": "/painLevel" } }]
    }
  }
}

配合 WForm 使用

json
[
  {
    "id": "form_item_pain",
    "component": "WFormItem",
    "label": "疼痛等级",
    "prop": "painLevel",
    "children": ["slider_pain"]
  },
  {
    "id": "slider_pain",
    "component": "WSlider",
    "min": 0,
    "max": 10,
    "modelValue": { "path": "/painLevel" },
    "action": {
      "event": {
        "name": "onPainLevelChange",
        "context": [{ "key": "painLevel", "value": { "path": "/painLevel" } }]
      }
    }
  }
]

事件处理

滑块变化事件

typescript
processor.onEvent((event) => {
  const { name, context } = event.message.userAction ?? {};
  if (name === 'onPainLevelChange') {
    console.log('疼痛等级已更新:', context?.painLevel);
  }
});

数据同步机制

WSlider 在拖动结束或输入确认后会自动将值同步到 dataModel,流程与 WInputNumber、WRate 一致:

  1. 用户拖动滑块或修改输入框
  2. 组件触发 change 事件
  3. modelValue.path 指向的 dataModel 字段自动更新
  4. 若配置了 action,同步派发 A2UI 客户端事件