uni-app uni-drawer 组件的打开关闭方法找不到

uni-app uni-drawer 组件的打开关闭方法找不到

项目信息 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 19043.1415
HBuilderX类型 正式
HBuilderX版本号 3.3.3
手机系统 Android
手机系统版本号 Android 12
手机厂商 小米
手机机型 小米10
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

示例代码:

<uni-drawer ref="showRight" mode="right" :mask-click="false" :width='250' @change='drawerHander'>  
</uni-drawer>  

this.$refs.showRight.open();
this.$refs.showRight.close();

操作步骤:

uni-drawer组件引入后   运行 this.$refs.showRight.open();或this.$refs.showRight.close(); 找不到方法

预期结果:

运行 this.$refs.showRight.open();或this.$refs.showRight.close(); 可打开或关闭

实际结果:

Error in v-on handler: "TypeError: this.$refs.showRight.close is not a function"

bug描述:

uni-drawer 组件的 this.$refs.showRight.open();和 this.$refs.showRight.close(); 两个方法找不到


更多关于uni-app uni-drawer 组件的打开关闭方法找不到的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

更新uni-drawer组件到最新版本 用uni-drawer文档中的示例测试下

更多关于uni-app uni-drawer 组件的打开关闭方法找不到的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据你提供的信息,问题在于调用 this.$refs.showRight.open()this.$refs.showRight.close() 时提示方法不存在。这通常是由于 uni-drawer 组件在 vue2 中的引用方式导致的。uni-drawer 是一个自定义组件,其方法需要通过 $refs 正确访问。

从你的代码看,uni-drawerref 设置为 showRight,但直接调用 this.$refs.showRight.open() 可能无法获取到组件实例。在 vue2 中,uni-drawer 的方法可能被封装在组件内部,需要通过 $refs 获取组件后调用其内部方法。但根据错误提示,this.$refs.showRight 可能未正确暴露 openclose 方法。

解决方案:

  1. 检查组件引用:确保 uni-drawer 组件已正确引入并注册。在 vue2 项目中,uni-draweruni-ui 的一部分,需通过 uni_modules 安装或手动引入。检查项目中是否已安装 uni-drawer 组件(路径通常为 uni_modules/uni-drawer)。
  2. 使用正确的方法名uni-drawer 的打开和关闭方法可能不是 openclose。查阅官方文档,uni-drawer 通常通过 show()close() 控制。尝试将代码改为:
    this.$refs.showRight.show(); // 打开抽屉
    this.$refs.showRight.close(); // 关闭抽屉
    
    如果仍无效,可尝试使用 this.$refs.showRight.openDrawer()this.$refs.showRight.closeDrawer()(具体方法名需参考最新文档)。
  3. 通过事件控制uni-drawer 支持通过 v-model:visible 绑定状态控制开关。建议使用数据驱动方式,例如:
    <template>
      <uni-drawer :visible="drawerVisible" @change="drawerHander" mode="right" :mask-click="false" :width='250'>
      </uni-drawer>
    </template>
    <script>
    export default {
      data() {
        return {
          drawerVisible: false
        };
      },
      methods: {
        openDrawer() {
          this.drawerVisible = true;
        },
        closeDrawer() {
          this.drawerVisible = false;
        },
        drawerHander(e) {
          this.drawerVisible = e;
        }
      }
    };
    </script>
    
    通过设置 drawerVisibletruefalse 来控制抽屉开关,这更符合 vue 的数据驱动理念。
  4. 检查组件版本:确保 uni-drawer 为最新版本。老版本可能存在方法名不一致或 bug。通过 HBuilderX 更新 uni_modules 依赖(右键项目 -> 更新所有 uni_modules 依赖)。
  5. 调试引用对象:在调用方法前,打印 this.$refs.showRight 确认对象结构:
    console.log(this.$refs.showRight);
回到顶部