全部產品
Search
文件中心

Mobile Platform as a Service:選擇組(Selector)

更新時間:Jul 13, 2024

提供多個選項供使用者選擇,一般在篩選和表單中使用當作為表單組件,配合 Form/FormItem 組件使用時,需要設定 mode 的值為 form。

屬性

type SelectorItem = {
  text: string;
  value: string|number;
  subText?: srting;
  disabled?: boolean;
}

屬性

類型

必填

預設值

說明

value

string | number | string[] | number[]

-

已選擇項,取 items 每一項的 value

items

SelectorItem[]

-

可選項

activeItemClassName

string

-

每一項啟用時新加類名

multiple

boolean

false

是否允許多選,標籤欄顯示的時候會顯示當前單選/多選的狀態

title

string

''

標籤欄標題

desc

string

''

標籤欄說明

id

string

-

表單元素 id

name

string

-

表單元素 name

disabled

boolean

false

是否禁用

mode

'noraml' | 'form'

'normal'

配合 From/FormItem 組件使用時,mode 需設定為 form

className

string

-

類名

事件

事件名

說明

類型

onChange

選中值發生變化,觸發回調

(v: string | string[], selectedItem: SelectItem | SelectItem[] ) => void

樣式類

類名

說明

amd-selector

整體樣式

amd-selector-disabled

禁用狀態下的整體樣式

amd-selector-content

單個選項樣式

amd-selector-item

單個選項樣式

amd-selector-item-active

啟用狀態下單個樣式

amd-selector-item-disabled

禁用狀態下單個選項樣式

amd-selector-item-text

文本樣式

amd-selector-item-subtext

副文本樣式

amd-selector-item-badge-active

啟用狀態下徽標樣式

程式碼範例

基本使用

index.axml 的程式碼範例如下:

<selector 
  title="單選"
  value="11"
  items="{{items1}}"/>

<selector 
  title="單選"
  value="2"
  desc="選項帶有副標題"
  items="{{items2}}"/>

<selector 
  title="多選"
  value="{{['1','2']}}"
  items="{{items1}}"
  multiple="{{true}}"/>

<selector 
  title="全禁用"
  value="{{['1','2']}}"
  items="{{items1}}"
  disabled="{{true}}"
  multiple="{{true}}"/>

<selector 
  title="部分禁用"
  value="{{['1','2']}}"
  items="{{items3}}"
  multiple="{{true}}"/>

<selector 
  title="更改值"
  value="{{value}}"
  items="{{items1}}"
  onChange="handleChange"/>

<view class="valusBox">
  <button 
    type="danger-ghost"
    inline="{{true}}"
    inlineSize="larger"
    onTap="handleChangeValue"
    data-value="11">
    改變選中值為: 3
  </button>
</view>

index.js 的程式碼範例如下:

Page({
  data: {
    items1: [
      { text: '選項一', value: '1' },
      { text: '選項二', value: '2' },
      { text: '選項三', value: '11' }],
    items2: [
      { text: '選項一', subText: '副標題一', value: '1' },
      { text: '選項二', subText: '副標題二', value: '2' },
      { text: '選項三', subText: '副標題三', value: '3' }],
    items3: [
      { text: '選項一', subText: '副標題一', value: '1' },
      { text: '選項二', subText: '副標題二', value: '2', disabled: true },
      { text: '選項三', subText: '副標題三', value: '3' }],
    items: [
      {
        text: '選項一',
        value: '1',
      },
      {
        text: '選項二',
        subText: '描述文案 2',
        value: '2',
      },
      {
        text: '選項三',
        disabled: true,
        value: '3',
      },
      {
        text: '選項四',
        subText: '描述文案 4',
        disabled: true,
        value: '4',
      },
      {
        text: '選項五',
        subText: '描述文案 5',
        value: '5',
      },
    ],
    value: '1',
  },
  handleChangeValue(e) {
    const { value } = e.currentTarget.dataset;
    this.setData({
      value,
    });
  },
  handleChange(e) {
    this.setData({
      value: e,
    });
  },
});

index.acss 的程式碼範例如下:

.btns,
.valusBox {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  padding: 24rpx;
  background-color: #fff;
}
.btns .amd-button {
  flex: 1;
  margin: 0 12rpx;
}
.valusBox {
  flex-wrap: wrap;
}

index.json 的程式碼範例如下:

{
  "defaultTitle": "Selector",
  "usingComponents": {
    "selector": "antd-mini/es/Selector/index",
    "button": "antd-mini/es/Button/index",
    "demo-block": "../../components/DemoBlock/index"
  }
}