项目所用的技术:
uniapp手机端底部的导航栏用的是colorUI中自定义的,并不是uniapp中原生的tabbar
目前问题:
点不同的tabbar可以显示不同的UI页面,关键是页面UI都在一个URL地址中,也就是说不管切换到哪个tabbar,显示的都是根路径: /。
目前需求:
需要实现在一个订单成功的页面,点击 < 后退两个页面到商城列表页,且底部要显示对应高亮的tabbar,用的uni.navigateBack
没有效果,具体原因现在还不太清楚。
用了this.$router.go(-2)
在浏览器模拟端实现没问题,但是打包到手机上还是不行,如下图:
于是开启了漫无目的的找bug,试解决方法…
后面发现用 vue 组件之间兄弟传值的方式可以实现,需要先在项目根目录下新建一个 bus.js 文件
import Vue from 'vue'
export default new Vue()
在需要发送数据的文件中,传递数据
<script>
import bus from '@/bus.js'
export default {
name: 'orderSuccess',
methods: {
gotoMall() {
// 先跳转到首页
uni.navigateTo({
url: '/pages/index/index'
})
// 传递一个 mall 字段过去
bus.$emit('changeBar', 'mall')
},
}
}
</script>
然后在需要接受数据的文件中通过 $emit.on 接收
<script>
import bus from '@/bus.js'
export default {
data(){
return {
PageCur: 'indexpage', // 默认底部导航栏的首页高亮
commponent1Key: 0,
commponent2Key: 0,
commponent3Key: 0,
commponent4Key: 0,
commponent5Key: 0,
}
},
created() {
// val 拿到的就是传过来的 mall 字段
bus.$on('changeBar', val => (this.PageCur = val))
}
}
</script>