面向百度~~ 2023-09-17 00:20 采纳率: 33.3%
浏览 8

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

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

img

这是需求:

img

这个需求要怎么解决?

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-17 02:08
    关注

    【以下回答由 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的底部弹窗主体选择部分抽离为一个单独的页面。如果有其他问题,请随时提问。



    【相关推荐】



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

报告相同问题?

问题事件

  • 创建了问题 9月17日

悬赏问题

  • ¥15 Fluent udf 编写问题
  • ¥15 求合并两个字节流VB6代码
  • ¥15 Pyqt 如何正确的关掉Qthread,并且释放其中的锁?
  • ¥30 网站服务器通过node.js部署了一个项目!前端访问失败
  • ¥15 WPS访问权限不足怎么解决
  • ¥15 java幂等控制问题
  • ¥15 海湾GST-DJ-N500
  • ¥15 氧化掩蔽层与注入条件关系
  • ¥15 Django DRF 如何反序列化得到Python对象类型数据
  • ¥15 多数据源与Hystrix的冲突