跳到主要内容
版本:v7

ion-picker

scoped

选择器(Picker)是一种对话框,显示一行按钮和下方的列。它会出现在应用内容的上方和视口的底部。

内联选择器(推荐)

通过直接在模板中编写组件,可以使用 ion-picker。这减少了展示选择器时需要连接的处理程序数量。

Console
Console messages will appear here when logged from the example above.

使用 isOpen 属性

ion-picker 上的 isOpen 属性允许开发者通过应用状态来控制选择器的呈现状态。这意味着当 isOpen 设为 true 时,选择器将显示;当 isOpen 设为 false 时,选择器将关闭。

isOpen 使用单向数据绑定,这意味着当选择器关闭时,它不会自动设置为 false。开发者应该监听 ionPickerDidDismissdidDismiss 事件,并将 isOpen 设置为 false。这样做的原因是防止 ion-picker 的内部逻辑与应用程序状态紧密耦合。使用单向数据绑定,选择器只需关注响应式变量提供的布尔值。而使用双向数据绑定,选择器需要同时关注布尔值以及响应式变量本身的存在。这可能导致不确定的行为,并使应用程序更难调试。

Console
Console messages will appear here when logged from the example above.

控制器选择器

在需要更多控制选择器显示和关闭时机的情况下,可以使用 pickerController

Console
Console messages will appear here when logged from the example above.

多列选择

columns 属性可用于显示包含多列不同选项的选择器。

Console
Console messages will appear here when logged from the example above.

接口

PickerButton

interface PickerButton {
text?: string;
role?: string;
cssClass?: string | string[];
handler?: (value: any) => boolean | void;
}

PickerColumn

interface PickerColumn {
name: string;
align?: string;
/**
* 更改此值可以设置选择器列的初始值。
*/
selectedIndex?: number;
prevSelected?: number;
prefix?: string;
suffix?: string;
options: PickerColumnOption[];
cssClass?: string | string[];
columnWidth?: string;
prefixWidth?: string;
suffixWidth?: string;
optionsWidth?: string;
}

PickerColumnOption

interface PickerColumnOption {
text?: string;
value?: any;
disabled?: boolean;
duration?: number;
transform?: string;
selected?: boolean;
/**
* 可选的文本,用作选择器列选项的 aria-label。
*/
ariaLabel?: string;
}

PickerOptions

interface PickerOptions {
columns: PickerColumn[];
buttons?: PickerButton[];
cssClass?: string | string[];
showBackdrop?: boolean;
backdropDismiss?: boolean;
animated?: boolean;

mode?: Mode;
keyboardClose?: boolean;
id?: string;
htmlAttributes?: { [key: string]: any };

enterAnimation?: AnimationBuilder;
leaveAnimation?: AnimationBuilder;
}

属性

animated

DescriptionIf true, the picker will animate.
Attributeanimated
Typeboolean
Defaulttrue

backdropDismiss

DescriptionIf true, the picker will be dismissed when the backdrop is clicked.
Attributebackdrop-dismiss
Typeboolean
Defaulttrue

buttons

DescriptionArray of buttons to be displayed at the top of the picker.
Attributeundefined
TypePickerButton[]
Default[]

columns

DescriptionArray of columns to be displayed in the picker.
Attributeundefined
TypePickerColumn[]
Default[]

cssClass

DescriptionAdditional classes to apply for custom CSS. If multiple classes are provided they should be separated by spaces.
Attributecss-class
Typestring | string[] | undefined
Defaultundefined

duration

DescriptionNumber of milliseconds to wait before dismissing the picker.
Attributeduration
Typenumber
Default0

enterAnimation

DescriptionAnimation to use when the picker is presented.
Attributeundefined
Type((baseEl: any, opts?: any) => Animation) | undefined
Defaultundefined

htmlAttributes

DescriptionAdditional attributes to pass to the picker.
Attributeundefined
Typeundefined | { [key: string]: any; }
Defaultundefined

isOpen

DescriptionIf true, the picker will open. If false, the picker will close. Use this if you need finer grained control over presentation, otherwise just use the pickerController or the trigger property. Note: isOpen will not automatically be set back to false when the picker dismisses. You will need to do that in your code.
Attributeis-open
Typeboolean
Defaultfalse

keyboardClose

DescriptionIf true, the keyboard will be automatically dismissed when the overlay is presented.
Attributekeyboard-close
Typeboolean
Defaulttrue

leaveAnimation

DescriptionAnimation to use when the picker is dismissed.
Attributeundefined
Type((baseEl: any, opts?: any) => Animation) | undefined
Defaultundefined

mode

DescriptionThe mode determines which platform styles to use.

This is a virtual property that is set once during initialization and will not update if you change its value after the initial render.
Attributemode
Type"ios" | "md"
Defaultundefined

showBackdrop

DescriptionIf true, a backdrop will be displayed behind the picker.
Attributeshow-backdrop
Typeboolean
Defaulttrue

trigger

DescriptionAn ID corresponding to the trigger element that causes the picker to open when clicked.
Attributetrigger
Typestring | undefined
Defaultundefined

事件

NameDescriptionBubbles
didDismissEmitted after the picker has dismissed. Shorthand for ionPickerDidDismiss.true
didPresentEmitted after the picker has presented. Shorthand for ionPickerWillDismiss.true
ionPickerDidDismissEmitted after the picker has dismissed.true
ionPickerDidPresentEmitted after the picker has presented.true
ionPickerWillDismissEmitted before the picker has dismissed.true
ionPickerWillPresentEmitted before the picker has presented.true
willDismissEmitted before the picker has dismissed. Shorthand for ionPickerWillDismiss.true
willPresentEmitted before the picker has presented. Shorthand for ionPickerWillPresent.true

方法

dismiss

DescriptionDismiss the picker overlay after it has been presented.
Signaturedismiss(data?: any, role?: string) => Promise<boolean>
Parametersdata: Any data to emit in the dismiss events.
role: The role of the element that is dismissing the picker. This can be useful in a button handler for determining which button was clicked to dismiss the picker. Some examples include: ``"cancel", "destructive", "selected", and "backdrop".

This is a no-op if the overlay has not been presented yet. If you want to remove an overlay from the DOM that was never presented, use the remove method.

getColumn

DescriptionGet the column that matches the specified name.
SignaturegetColumn(name: string) => Promise<PickerColumn | undefined>
Parametersname: The name of the column.

onDidDismiss

DescriptionReturns a promise that resolves when the picker did dismiss.
SignatureonDidDismiss<T = any>() => Promise<OverlayEventDetail<T>>

onWillDismiss

DescriptionReturns a promise that resolves when the picker will dismiss.
SignatureonWillDismiss<T = any>() => Promise<OverlayEventDetail<T>>

present

DescriptionPresent the picker overlay after it has been created.
Signaturepresent() => Promise<void>

CSS Shadow Parts

No CSS shadow parts available for this component.

CSS 自定义属性

NameDescription
--backdrop-opacityOpacity of the backdrop
--backgroundBackground of the picker
--background-rgbBackground of the picker in rgb format
--border-colorBorder color of the picker
--border-radiusBorder radius of the picker
--border-styleBorder style of the picker
--border-widthBorder width of the picker
--heightHeight of the picker
--max-heightMaximum height of the picker
--max-widthMaximum width of the picker
--min-heightMinimum height of the picker
--min-widthMinimum width of the picker
--widthWidth of the picker

插槽

No slots available for this component.