<template>
<view>
这是登录页
<button type="default" @click="toDoLogin">登录</button>
</view>
</template>
<script>
export default {
data() {
return {
onsite: ''
}
},
onLoad(event) {
if (event.onsite) {
this.onsite = event.onsite
}
},
methods: {
toDoLogin() {
if (this.onsite === 'L') {
uni.setTabBarItem({
index: 0,
text: '项目汇总',
iconPath: 'static/logo.png',
selectedIconPath: 'static/logo.png',
pagePath: 'pages/home/home',
success(info) {
console.log("设置成功,返回信息:", info)
uni.switchTab({
url: '/pages/home/home'
})
},
fail(err) {
console.log("设置失败,错误信息:", err)
}
})
} else {
uni.switchTab({
url: '/pages/index/index'
})
}
}
}
}
</script>
<style>
</style>
- 发布:2021-09-15 18:03
- 更新:2024-07-31 17:51
- 阅读:6267
产品分类: uniapp/H5
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: macOS Big Sur 11.5.2 (20G95)
HBuilderX类型: 正式
HBuilderX版本号: 3.2.3
浏览器平台: Chrome
浏览器版本: 93.0.4577.63
项目创建方式: HBuilderX
示例代码:
操作步骤:
HbuilderX打开项目,运行到浏览器Chrome后,url中添加参数?onsite=L,点击登录,查看控制台信息
HbuilderX打开项目,运行到浏览器Chrome后,url中添加参数?onsite=L,点击登录,查看控制台信息
预期结果:
动态设置第一个tabBar的路径及名称后成功跳转新页面
动态设置第一个tabBar的路径及名称后成功跳转新页面
实际结果:
不走成功,调用uni.setTabBarItem方法触发失败函数,错误信息:errMsg: "setTabBarItem:fail not TabBar page"
不走成功,调用uni.setTabBarItem方法触发失败函数,错误信息:errMsg: "setTabBarItem:fail not TabBar page"
bug描述:
业务逻辑,根据不同用户类型动态设置tabBar第一个的路径及名称
实现步骤:
- 登录接口返回onsite
- onsite 为L时,动态设置第一个tabBar的路径及名称
- 动态设置成功后跳转对应新的首页
BUG:
调用uni.setTabBarItem失败,同时测试调用所有设置 tabBar的方法都是失败
调用失败信息:
errMsg: "setTabBarItem:fail not TabBar page"
附件中有示例代码
已成功排坑,在 h5 端,使用 uni.setTabBarItem 方法必须在 tabbar 页面,否则就会报 errMsg: "setTabBarItem:fail not TabBar page" 的问题,但是该方法在 app 中,非 tabbar 页面也可以正常调用。其他端未尝试(官方文档中并未提到这一点。)