
简体中文
从底部向上弹出操作菜单
Web | 微信小程序 | Android | iOS | iOS uni-app x UTS 插件 | HarmonyOS |
---|---|---|---|---|---|
4.0 | 4.41 | 3.91 | 4.11 | 4.11 | 4.61 |
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options | ShowActionSheetOptions | 是 | - | - | uni.showActionSheet函数参数定义 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 |
---|---|---|---|---|---|
errMsg | string | 是 | - | - | |
tapIndex | number | 是 | - | - |
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 |
---|---|---|---|---|---|
errCode | number | 是 | - | - | showActionSheet 错误码 - 4: 框架内部异常 |
errSubject | string | 是 | - | - | 统一错误主题(模块)名称 |
data | any | 否 | - | - | 错误信息中包含的数据 |
cause | Error | 否 | - | - | 源错误信息,可以包含多个错误,详见SourceError |
errMsg | string | 是 | - | - |
示例为hello uni-app x alpha分支,与最新HBuilderX Alpha版同步。与最新正式版同步的master分支示例另见
示例
<template>
<!-- #ifdef APP -->
<scroll-view style="flex: 1;">
<!-- #endif -->
<view>
<page-head :title="title"></page-head>
<view class="uni-list">
<radio-group @change="radioChange">
<radio class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in items" :key="item.value"
:class="index < items.length - 1 ? 'uni-list-cell-line': ''" :value="item.value" :checked="index === current">
{{item.name}}
</radio>
</radio-group>
</view>
<view class="uni-list">
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">自定义 titleColor</view>
<switch :checked="titleColorCustom" @change="titleColorChange" />
</view>
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">自定义 itemColor</view>
<switch :checked="itemColorCustom" @change="itemColorChange" />
</view>
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">超长文本和空文本 item</view>
<switch :checked="itemContentLarge" @change="itemContentLargeChange" />
</view>
<!-- #ifndef MP -->
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">超过6个 item</view>
<switch :checked="itemNumLargeSelect" @change="itemNumLargeChange" />
</view>
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">自定义 cancelText</view>
<switch :checked="cancelTextCustom" @change="cancelTextChange" />
</view>
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">自定义 cancelColor</view>
<switch :checked="cancelColorCustom" @change="cancelColorChange" />
</view>
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">自定义 backgroundColor</view>
<switch :checked="backgroundColorCustom" @change="backgroundColorChange" />
</view>
<!-- #endif -->
</view>
<view class="uni-padding-wrap">
<view class="uni-btn-v">
<button class="uni-btn-v" type="default" @tap="showActionSheet" id="btn-action-sheet-show">弹出actionSheet</button>
<button class="uni-btn-v uni-btn" type="default" @tap="showActionSheetAndShowAgainInCallback" id="btn-action-sheet-show">showActionSheet 并在回调中再次 showActionSheet</button>
</view>
</view>
</view>
<!-- #ifdef APP -->
</scroll-view>
<!-- #endif -->
</template>
<script lang="uts">
import { state, setLifeCycleNum } from '@/store/index.uts'
type ItemType = {
value : string,
name : string,
}
export default {
data() {
return {
title: 'action-sheet',
titleColorCustom: false,
itemColorCustom: false,
itemContentLarge: false,
itemNumLargeSelect: false,
cancelTextCustom: false,
cancelColorCustom: false,
backgroundColorCustom: false,
showErrorToast: true,
items: [{
value: '标题',
name: '有标题'
},
{
value: '',
name: '无标题'
},
{
value: '超长标题测试内容,测试超过显示最大范围之后的样式-超长标题测试内容,测试超过显示最大范围之后的样式',
name: '超长标题'
}
] as ItemType[],
current: 0,
// #ifdef APP
originTheme: null as string | null,
// #endif
}
},
onLoad() {
uni.showActionSheet({
title: "onLoad 调用示例,请手动取消",
itemList: ['item1', 'item2'],
fail: (res) => {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1)
console.log('onLoad showActionSheet fail', res)
},
complete: (res) => {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1)
console.log('onLoad showActionSheet complete', res)
}
})
// #ifdef APP
this.originTheme = uni.getSystemInfoSync().appTheme
// #endif
},
methods: {
//自动化测试例专用
// #ifdef APP
setThemeAuto() {
uni.setAppTheme({
theme: 'auto'
})
},
resetTheme() {
const originTheme = this.originTheme
if(originTheme != null){
uni.setAppTheme({
theme: originTheme
})
}
},
// #endif
radioChange(e : UniRadioGroupChangeEvent) {
for (let i = 0; i < this.items.length; i++) {
if (this.items[i].value === e.detail.value) {
this.current = i;
break;
}
}
},
titleColorChange(e : UniSwitchChangeEvent) {
this.titleColorCustom = e.detail.value
},
itemContentLargeChange: function (e : UniSwitchChangeEvent) {
this.itemContentLarge = e.detail.value
},
itemColorChange: function (e : UniSwitchChangeEvent) {
this.itemColorCustom = e.detail.value
},
itemNumLargeChange: function (e : UniSwitchChangeEvent) {
this.itemNumLargeSelect = e.detail.value
},
cancelTextChange: function (e : UniSwitchChangeEvent) {
this.cancelTextCustom = e.detail.value
},
cancelColorChange: function (e : UniSwitchChangeEvent) {
this.cancelColorCustom = e.detail.value
},
backgroundColorChange: function (e : UniSwitchChangeEvent) {
this.backgroundColorCustom = e.detail.value
},
showActionSheet() {
const options: ShowActionSheetOptions = {
title: this.items[this.current].value,
itemList: ['item1', 'item2', 'item3', 'item4'],
success: (res) => {
console.log(res.tapIndex);
uni.showToast({
title: "点击了第" + res.tapIndex + "个选项",
icon: "none"
})
},
fail: (error) => {
if (this.showErrorToast) {
uni.showToast({
title: error.errMsg,
icon: "none"
})
}
console.log(error);
}
}
if (this.itemContentLarge) {
options.itemList = ['两个黄鹂鸣翠柳,一行白鹭上青天。窗含西岭千秋雪,门泊东吴万里船', '水光潋滟晴方好,山色空蒙雨亦奇。 欲把西湖比西子,淡妆浓抹总相宜', '']
}
if (this.itemNumLargeSelect) {
// 大量选项测试,不能超过6个元素 https://uniapp.dcloud.net.cn/api/ui/prompt.html#showactionsheet
const arr: string[] = []
for(let i = 0; i < 10; i++){
arr.push(`两个黄鹂鸣翠柳,一行白鹭上青天 ${i+1}`)
}
options.itemList = arr
}
if(this.titleColorCustom){
options.titleColor = '#007AFF'
}
if(this.itemColorCustom){
options.itemColor = '#ff00ff'
}
if(this.cancelTextCustom){
options.cancelText = 'custom cancel'
}
if(this.cancelColorCustom){
options.cancelColor = '#007AFF'
}
if(this.backgroundColorCustom){
options.backgroundColor = '#ccc'
}
uni.showActionSheet(options)
},
showActionSheetAndShowAgainInCallback(){
uni.showActionSheet({
title: '第一个',
itemList: ['1','2','3'],
complete(){
uni.showActionSheet({
title: '第二个',
itemList: ['a','b','c'],
complete: (res) => {
console.log('showActionSheetAndShowAgainInCallback complete', res)
}
})
}
})
},
// 自动化测试
getLifeCycleNum(){
return state.lifeCycleNum
},
// 自动化测试
// #ifdef WEB
closeWebActionSheet(){
document.querySelector('.uni-action-sheet_dialog__cell').click()
},
// #endif
// 自动化测试
hideActionSheet(){
uni.hideActionSheet()
}
}
}
</script>
注意:
关闭栈顶页面操作菜单
Web | 微信小程序 | Android | iOS | iOS uni-app x UTS 插件 | HarmonyOS |
---|---|---|---|---|---|
4.51 | x | 4.51 | 4.51 | 4.51 | x |
示例为hello uni-app x alpha分支,与最新HBuilderX Alpha版同步。与最新正式版同步的master分支示例另见
示例
<template>
<!-- #ifdef APP -->
<scroll-view style="flex: 1;">
<!-- #endif -->
<view>
<page-head :title="title"></page-head>
<view class="uni-list">
<radio-group @change="radioChange">
<radio class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in items" :key="item.value"
:class="index < items.length - 1 ? 'uni-list-cell-line': ''" :value="item.value" :checked="index === current">
{{item.name}}
</radio>
</radio-group>
</view>
<view class="uni-list">
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">自定义 titleColor</view>
<switch :checked="titleColorCustom" @change="titleColorChange" />
</view>
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">自定义 itemColor</view>
<switch :checked="itemColorCustom" @change="itemColorChange" />
</view>
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">超长文本和空文本 item</view>
<switch :checked="itemContentLarge" @change="itemContentLargeChange" />
</view>
<!-- #ifndef MP -->
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">超过6个 item</view>
<switch :checked="itemNumLargeSelect" @change="itemNumLargeChange" />
</view>
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">自定义 cancelText</view>
<switch :checked="cancelTextCustom" @change="cancelTextChange" />
</view>
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">自定义 cancelColor</view>
<switch :checked="cancelColorCustom" @change="cancelColorChange" />
</view>
<view class="uni-list-cell uni-list-cell-pd">
<view class="uni-list-cell-db">自定义 backgroundColor</view>
<switch :checked="backgroundColorCustom" @change="backgroundColorChange" />
</view>
<!-- #endif -->
</view>
<view class="uni-padding-wrap">
<view class="uni-btn-v">
<button class="uni-btn-v" type="default" @tap="showActionSheet" id="btn-action-sheet-show">弹出actionSheet</button>
<button class="uni-btn-v uni-btn" type="default" @tap="showActionSheetAndShowAgainInCallback" id="btn-action-sheet-show">showActionSheet 并在回调中再次 showActionSheet</button>
</view>
</view>
</view>
<!-- #ifdef APP -->
</scroll-view>
<!-- #endif -->
</template>
<script lang="uts">
import { state, setLifeCycleNum } from '@/store/index.uts'
type ItemType = {
value : string,
name : string,
}
export default {
data() {
return {
title: 'action-sheet',
titleColorCustom: false,
itemColorCustom: false,
itemContentLarge: false,
itemNumLargeSelect: false,
cancelTextCustom: false,
cancelColorCustom: false,
backgroundColorCustom: false,
showErrorToast: true,
items: [{
value: '标题',
name: '有标题'
},
{
value: '',
name: '无标题'
},
{
value: '超长标题测试内容,测试超过显示最大范围之后的样式-超长标题测试内容,测试超过显示最大范围之后的样式',
name: '超长标题'
}
] as ItemType[],
current: 0,
// #ifdef APP
originTheme: null as string | null,
// #endif
}
},
onLoad() {
uni.showActionSheet({
title: "onLoad 调用示例,请手动取消",
itemList: ['item1', 'item2'],
fail: (res) => {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1)
console.log('onLoad showActionSheet fail', res)
},
complete: (res) => {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1)
console.log('onLoad showActionSheet complete', res)
}
})
// #ifdef APP
this.originTheme = uni.getSystemInfoSync().appTheme
// #endif
},
methods: {
//自动化测试例专用
// #ifdef APP
setThemeAuto() {
uni.setAppTheme({
theme: 'auto'
})
},
resetTheme() {
const originTheme = this.originTheme
if(originTheme != null){
uni.setAppTheme({
theme: originTheme
})
}
},
// #endif
radioChange(e : UniRadioGroupChangeEvent) {
for (let i = 0; i < this.items.length; i++) {
if (this.items[i].value === e.detail.value) {
this.current = i;
break;
}
}
},
titleColorChange(e : UniSwitchChangeEvent) {
this.titleColorCustom = e.detail.value
},
itemContentLargeChange: function (e : UniSwitchChangeEvent) {
this.itemContentLarge = e.detail.value
},
itemColorChange: function (e : UniSwitchChangeEvent) {
this.itemColorCustom = e.detail.value
},
itemNumLargeChange: function (e : UniSwitchChangeEvent) {
this.itemNumLargeSelect = e.detail.value
},
cancelTextChange: function (e : UniSwitchChangeEvent) {
this.cancelTextCustom = e.detail.value
},
cancelColorChange: function (e : UniSwitchChangeEvent) {
this.cancelColorCustom = e.detail.value
},
backgroundColorChange: function (e : UniSwitchChangeEvent) {
this.backgroundColorCustom = e.detail.value
},
showActionSheet() {
const options: ShowActionSheetOptions = {
title: this.items[this.current].value,
itemList: ['item1', 'item2', 'item3', 'item4'],
success: (res) => {
console.log(res.tapIndex);
uni.showToast({
title: "点击了第" + res.tapIndex + "个选项",
icon: "none"
})
},
fail: (error) => {
if (this.showErrorToast) {
uni.showToast({
title: error.errMsg,
icon: "none"
})
}
console.log(error);
}
}
if (this.itemContentLarge) {
options.itemList = ['两个黄鹂鸣翠柳,一行白鹭上青天。窗含西岭千秋雪,门泊东吴万里船', '水光潋滟晴方好,山色空蒙雨亦奇。 欲把西湖比西子,淡妆浓抹总相宜', '']
}
if (this.itemNumLargeSelect) {
// 大量选项测试,不能超过6个元素 https://uniapp.dcloud.net.cn/api/ui/prompt.html#showactionsheet
const arr: string[] = []
for(let i = 0; i < 10; i++){
arr.push(`两个黄鹂鸣翠柳,一行白鹭上青天 ${i+1}`)
}
options.itemList = arr
}
if(this.titleColorCustom){
options.titleColor = '#007AFF'
}
if(this.itemColorCustom){
options.itemColor = '#ff00ff'
}
if(this.cancelTextCustom){
options.cancelText = 'custom cancel'
}
if(this.cancelColorCustom){
options.cancelColor = '#007AFF'
}
if(this.backgroundColorCustom){
options.backgroundColor = '#ccc'
}
uni.showActionSheet(options)
},
showActionSheetAndShowAgainInCallback(){
uni.showActionSheet({
title: '第一个',
itemList: ['1','2','3'],
complete(){
uni.showActionSheet({
title: '第二个',
itemList: ['a','b','c'],
complete: (res) => {
console.log('showActionSheetAndShowAgainInCallback complete', res)
}
})
}
})
},
// 自动化测试
getLifeCycleNum(){
return state.lifeCycleNum
},
// 自动化测试
// #ifdef WEB
closeWebActionSheet(){
document.querySelector('.uni-action-sheet_dialog__cell').click()
},
// #endif
// 自动化测试
hideActionSheet(){
uni.hideActionSheet()
}
}
}
</script>
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 |
---|---|---|---|---|---|
errMsg | string | 是 | - | 错误信息 |