uview2如何将时间地址选择器u-picker底部弹窗主体选择部分抽离出为一个页面?

uview中时间地址多级选择器u-picker会弹出一个底部选择弹窗,但现在的需求是将选择器的面板内容单独拿出来作为一个页面如下图所示,这个问题该怎么解决?
这是uview原效果:

img

这是需求:

img

这个需求要怎么解决?

【以下回答由 GPT 生成】

首先,根据问题描述,是想将u-picker的底部弹窗主体选择部分抽离为一个单独的页面。对于这个问题,我有几个解决方案可以提供。

方案一:使用组件嵌套

  1. 在原始页面中使用u-picker组件,并在该组件中使用<slot>标签来将选择器的内容插入。
  2. 创建一个新的页面,用来单独展示选择器的内容。
  3. 将u-picker组件中的选择器内容部分抽离出来,在新页面中独立展示。
  4. 在原始页面中点击某个按钮或触发某个事件时,跳转到新页面,显示选择器的内容。

示例代码如下:

原始页面:

<template>
  <view>
    <!-- 这里可以放一些其他的内容 -->
    <button @click="goToPickerPage">打开选择器</button>
    <u-picker>
      <template>
        <slot></slot> <!-- 在这里插入选择器的内容 -->
      </template>
    </u-picker>
  </view>
</template>
<script>
  export default {
    methods: {
      goToPickerPage() {
        uni.navigateTo({
          url: '/pages/pickerPage' // 跳转到新页面
        })
      }
    }
  }
</script>

新页面 pickerPage.vue

<template>
  <view>
    <!-- 这里放选择器的内容 -->
  </view>
</template>
<script>
  export default {}
</script>

方案二:使用自定义组件

  1. 创建一个新的自定义组件,用来显示选择器的内容。在该组件中使用u-picker组件,并设置相应的属性和事件。
  2. 在原始页面中引入和使用新的自定义组件。

示例代码如下:

新组件 PickerContent.vue

<template>
  <u-picker></u-picker>
</template>
<script>
  import { UPicker, UPickerColumn, UPickerColumnItem } from 'uview-ui'
  export default {
    components: {
      UPicker,
      UPickerColumn,
      UPickerColumnItem
    },
    data() {
      return {
        // 设置u-picker的属性和事件
        pickerValue: []
      }
    }
  }
</script>

原始页面:

<template>
  <view>
    <!-- 这里可以放一些其他的内容 -->
    <button @click="showPicker">打开选择器</button>
    <picker-content v-if="isPickerVisible" @confirm="handlePickerConfirm"></picker-content>
  </view>
</template>
<script>
  import PickerContent from './PickerContent.vue'
  export default {
    components: {
      PickerContent
    },
    data() {
      return {
        isPickerVisible: false
      }
    },
    methods: {
      showPicker() {
        this.isPickerVisible = true
      },
      handlePickerConfirm(value) {
        // 处理选择器确认事件
        console.log(value)
        this.isPickerVisible = false
      }
    }
  }
</script>

以上是两种解决方案,可以根据实际情况选择合适的方法来实现将u-picker的底部弹窗主体选择部分抽离为一个单独的页面。如果有其他问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

默认弹出,高度设置100%,隐藏按钮。
或者如果只在小程序用,小程序官方有picker-view组件https://developers.weixin.qq.com/miniprogram/dev/component/picker-view.html