l***@163.com
l***@163.com
  • 发布:2020-08-24 12:07
  • 更新:2020-08-24 12:07
  • 阅读:1657

解决tabbar加上subnvue侧滑菜单,通过api的hide方法有时无法关闭侧滑界面的问题

分类:uni-app

一、出现问题的步骤重新:登陆页-》tabbar主页-》侧滑菜单退出登陆-》登陆页-》tabbar主页-》侧滑菜单点击菜单项,调用hide方法,侧滑无法关闭

二、具体解决办法:
1、侧滑菜单的subnvue是公共的,目录为platforms\app-plus\subNVue\left-drawer;

2、程序入口页是登陆页,登陆成功后通过uni.reLaunch到含tabbar的主页,tabbar有四个页面,每个页面都有subnvue侧滑菜单,subNVues节点中id分别为leftDrawerTab1、leftDrawerTab2、leftDrawerTab3、leftDrawerTab4;

3、tabbar页面
3.1、在onNavigationBarButtonTap导航按钮监听中,通过getSubNVueById获取到subnvue,并通过subnvue的show方法显示侧滑菜单
const leftDrawerTab1 = uni.getSubNVueById('leftDrawerTab1')
leftDrawerTab1.show('slide-in-left', 200)

3.2、在onload方法中,通过getSubNVueById获取到subnvue,并通过subnvue的hide方法隐藏侧滑菜单,解决第一次加载可能会默认显示的问题
uni.getSubNVueById('leftDrawerTab1').hide('slide-out-left',200)

4、侧滑菜单的subnvue页中,在点击菜单项时,通过subnvue的hide方法,和plus.webview.WebviewObject的hide方法关闭侧滑,通过plus.webview的all方法,找到所有的webview,然后根据第二步设定的id,找到所有的侧滑菜单的view,通通关一遍。

uni.getCurrentSubNVue().hide('auto')
// 获取所有Webview窗口
var wvs = plus.webview.all();
for(var i=0; i<wvs.length; i ){
if(wvs[i].id.indexOf('leftDrawerTab') != -1) {
wvs[i].hide()
}
}

三、效果:代码比较难看,但是目前好像管用。

2 关注 分享
3***@qq.com 4***@163.com

要回复文章请先登录注册