Skip to content

Cascader 级联选择器

级联选择器组件,用于选择级联数据。

基础用法

html
<div id="demo-cascader"></div>

<script>
  const cascader = new SaCascader('#demo-cascader', {
    options: [
      {
        value: '1',
        label: '选项1',
        children: [
          { value: '1-1', label: '选项1-1' },
          { value: '1-2', label: '选项1-2' }
        ]
      },
      {
        value: '2',
        label: '选项2',
        children: [
          { value: '2-1', label: '选项2-1' },
          { value: '2-2', label: '选项2-2' }
        ]
      }
    ],
    placeholder: '请选择',
    onChange: (value) => {
      console.log('选择的值:', value);
    }
  });
</script>
加载 SanoUI 组件中...
            
          

API

构造函数参数

参数说明类型默认值
container容器选择器或元素string | HTMLElement-
options配置选项SaCascaderOptions{}

配置选项

参数说明类型可选值默认值
options级联数据Array<CascaderOption>-[]
value当前值Array<string>-[]
placeholder占位符string-'请选择'
disabled是否禁用boolean-false
clearable是否可清除boolean-true
onChange值变化回调function(value: Array<string>)--

CascaderOption 配置

参数说明类型默认值
value选项值string-
label选项文本string-
children子选项数组Array<CascaderOption>-
disabled是否禁用booleanfalse

方法

方法名说明参数返回值
getValue获取当前值-Array<string>
setValue设置值value: Array<string>void
clear清除值-void
destroy销毁实例-void

示例代码

手动创建实例

javascript
const cascader = new SaCascader('#my-cascader', {
  options: [
    {
      value: '1',
      label: '省份',
      children: [
        {
          value: '1-1',
          label: '城市',
          children: [
            { value: '1-1-1', label: '区县1' },
            { value: '1-1-2', label: '区县2' }
          ]
        }
      ]
    }
  ],
  placeholder: '请选择省市区',
  clearable: true,
  onChange: (value) => {
    console.log('选择的值:', value);
  }
});

// 设置值
cascader.setValue(['1', '1-1', '1-1-1']);

// 获取值
const value = cascader.getValue();

// 清除值
cascader.clear();

实际使用场景

场景 1:省市区选择

使用级联选择器选择省市区。

html
<div id="region-cascader" style="width: 300px;"></div>

<script>
  const cascader = new SaCascader('#region-cascader', {
    options: [
      {
        value: 'beijing',
        label: '北京市',
        children: [
          {
            value: 'dongcheng',
            label: '东城区',
            children: [
              { value: 'dongcheng-1', label: '街道1' },
              { value: 'dongcheng-2', label: '街道2' }
            ]
          },
          {
            value: 'xicheng',
            label: '西城区',
            children: [
              { value: 'xicheng-1', label: '街道1' },
              { value: 'xicheng-2', label: '街道2' }
            ]
          }
        ]
      },
      {
        value: 'shanghai',
        label: '上海市',
        children: [
          {
            value: 'huangpu',
            label: '黄浦区',
            children: [
              { value: 'huangpu-1', label: '街道1' },
              { value: 'huangpu-2', label: '街道2' }
            ]
          }
        ]
      }
    ],
    placeholder: '请选择省市区',
    onChange: (value) => {
      console.log('选择的地区:', value);
    }
  });
</script>
加载 SanoUI 组件中...
            
          

场景 2:分类选择

使用级联选择器选择商品分类。

html
<div id="category-cascader" style="width: 300px;"></div>

<script>
  const cascader = new SaCascader('#category-cascader', {
    options: [
      {
        value: 'electronics',
        label: '电子产品',
        children: [
          {
            value: 'phone',
            label: '手机',
            children: [
              { value: 'iphone', label: 'iPhone' },
              { value: 'android', label: 'Android' }
            ]
          },
          {
            value: 'computer',
            label: '电脑',
            children: [
              { value: 'laptop', label: '笔记本' },
              { value: 'desktop', label: '台式机' }
            ]
          }
        ]
      },
      {
        value: 'clothing',
        label: '服装',
        children: [
          {
            value: 'men',
            label: '男装',
            children: [
              { value: 'shirt', label: '衬衫' },
              { value: 'pants', label: '裤子' }
            ]
          }
        ]
      }
    ],
    placeholder: '请选择分类',
    onChange: (value) => {
      console.log('选择的分类:', value);
    }
  });
</script>
加载 SanoUI 组件中...
            
          

Released under the MIT License.