<template> <view class="u-demo"> <view class="u-demo-wrap"> <view class="u-demo-title">演示效果</view> <view class="u-demo-area"> <u-toast ref="uToast"></u-toast> <u-button @click="btnClick">唤起弹窗</u-button> <u-popup border-radius="10" v-model="show" @close="close" @open="open" :mode="mode" length="50%" :mask="mask" :closeable="closeable" :close-icon-pos="closeIconPos" > <view v-if="mode == 'center'" style="height: 400rpx"> <view class="close-btn"> <u-button @click="show = false;" size="medium">关闭弹窗</u-button> </view> </view> <view class="close-btn" v-if="mode != 'center'"> <u-button size="medium" @click="show = false;">关闭弹窗</u-button> </view> </u-popup> </view> </view> <view class="u-config-wrap"> <view class="u-config-title u-border-bottom"> 参数配置 </view> <view class="u-config-item"> <view class="u-item-title">状态</view> <u-subsection :current="show == false ? 1 : 0" :list="['打开', '关闭']" @change="showChange"></u-subsection> </view> <view class="u-config-item"> <view class="u-item-title">弹出方向</view> <u-subsection :current="2" :list="['上', '下', '左', '右', '中']" @change="modeChange"></u-subsection> </view> <view class="u-config-item"> <view class="u-item-title">关闭按钮</view> <u-subsection :list="['显示', '隐藏']" @change="closeChange"></u-subsection> </view> <view class="u-config-item"> <view class="u-item-title">关闭按钮位置</view> <u-subsection :current="1" :list="['左上角', '右上角', '左下角', '右下角']" @change="closePosChange"></u-subsection> </view> </view> </view> </template> <script> export default { data() { return { show: false, mode: 'left', mask: true, // 是否显示遮罩 closeable: true, closeIconPos: 'top-right' } }, watch: { show(n) { // console.log(n); } }, methods: { modeChange(index) { this.mode = index == 0 ? 'top' : index == 1 ? 'bottom' : index == 2 ? 'left' : index == 3 ? 'right' : 'center'; this.show = true; }, showChange(index) { this.show = index == 0 ? true : false; }, closeChange(index) { this.closeable = !index; }, closePosChange(index) { this.closeIconPos = ['top-left', 'top-right', 'bottom-left', 'bottom-right'][index]; }, close() { // console.log('close'); }, open() { // console.log('open'); }, btnClick() { this.show = true; } } } </script> <style lang="scss" scoped> .wrap { padding: 24rpx; } .close-btn { height: 100%; display: flex; align-items: center; justify-content: center; } </style>