uni-app 插件 next-drag-fab 悬浮拖拽按钮 - PonderNext 在边界时不能自动识别弹出方向

发布于 1周前 作者 vueper 来自 Uni-App

uni-app 插件 next-drag-fab 悬浮拖拽按钮 - PonderNext 在边界时不能自动识别弹出方向

问题描述

Vue2,插件版本1.1.0,出现问题的测试环境H5、app、微信小程序

在边界时不能自动识别弹出方向,打日志看了下

image

这些方法只在初始化的时候执行了一次,后面拖拽_horizontal和_vertical发生变化,这些方法都没有执行,也就做不到自动识别弹出方向。至于为什么不响应执行刷新,本人功力不够,作者看看?


1 回复

在处理 uni-app 插件 next-drag-fab(悬浮拖拽按钮)时,如果 PonderNext 在边界时不能自动识别弹出方向,这通常涉及到对组件内部逻辑的调整或自定义边界行为。虽然我们不能直接修改插件的内部代码,但可以通过监听按钮的位置和屏幕边界来手动调整按钮的弹出方向。以下是一个基本的思路和代码示例,帮助你实现这一功能。

首先,确保你已经正确安装并引入了 next-drag-fab 插件。然后,你可以通过监听按钮的拖拽事件,结合屏幕边界信息,手动控制按钮的弹出方向。

// 假设你已经在页面中引入了 next-drag-fab 组件
<template>
  <view class="container">
    <next-drag-fab ref="dragFab" @drag="onDrag" :options="fabOptions"></next-drag-fab>
  </view>
</template>

<script>
export default {
  data() {
    return {
      fabOptions: {
        // 初始配置,可以根据需要调整
        direction: 'down', // 默认弹出方向
        // 其他配置...
      },
      screenWidth: 0,
      screenHeight: 0,
    };
  },
  mounted() {
    // 获取屏幕宽度和高度
    this.screenWidth = uni.getSystemInfoSync().windowWidth;
    this.screenHeight = uni.getSystemInfoSync().windowHeight;
  },
  methods: {
    onDrag(event) {
      const { x, y } = event.detail; // 获取当前拖拽位置
      let newDirection = this.fabOptions.direction;

      // 判断边界条件并调整方向
      if (y <= 50) { // 接近屏幕上边界
        newDirection = 'down';
      } else if (y >= this.screenHeight - 50) { // 接近屏幕下边界
        newDirection = 'up';
      } else if (x <= 50) { // 接近屏幕左边界(可选)
        newDirection = 'right';
      } else if (x >= this.screenWidth - 50) { // 接近屏幕右边界(可选)
        newDirection = 'left';
      }

      // 更新方向(这里假设你可以通过某种方式更新组件的方向属性,实际情况可能需要根据组件API调整)
      // 注意:next-drag-fab 可能不支持动态改变方向,这里仅为逻辑演示
      this.$refs.dragFab.direction = newDirection; // 假设组件支持这样的更新方式
      // 或者,你可能需要重新渲染组件或触发其内部逻辑来更新方向
    },
  },
};
</script>

注意:上述代码示例中的方向更新方式(this.$refs.dragFab.direction = newDirection;)是基于假设的,因为实际插件可能不支持这种方式直接更新属性。你需要查阅 next-drag-fab 的官方文档或源代码,了解如何正确地动态更新其方向属性。如果插件不支持动态更新,你可能需要考虑其他方案,如销毁并重新创建组件,或者使用其他支持动态方向的插件。

回到顶部