template_page_mixin.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /**
  2. * 演示页面mixin
  3. */
  4. module.exports = {
  5. data() {
  6. return {
  7. }
  8. },
  9. onLoad() {
  10. // 更新顶部导航栏信息
  11. this.updateCustomBarInfo()
  12. },
  13. methods: {
  14. // 点击左上角返回按钮时触发事件
  15. goBack() {
  16. // 通过判断当前页面的页面栈信息,是否有上一页进行返回,如果没有则跳转到首页
  17. const pages = getCurrentPages()
  18. if (pages && pages.length > 0) {
  19. const firstPage = pages[0]
  20. if (pages.length == 1 && (!firstPage.route || firstPage.route != 'pages/index')) {
  21. uni.reLaunch({
  22. url: '/pages/index'
  23. })
  24. } else {
  25. uni.navigateBack({
  26. delta: 1
  27. })
  28. }
  29. } else {
  30. uni.reLaunch({
  31. url: '/pages/index'
  32. })
  33. }
  34. },
  35. // 更新顶部导航栏信息
  36. async updateCustomBarInfo() {
  37. // 获取vuex中的自定义顶栏的高度
  38. let customBarHeight = this.vuex_custom_bar_height
  39. let statusBarHeight = this.vuex_status_bar_height
  40. // 如果获取失败则重新获取
  41. if (!customBarHeight) {
  42. try {
  43. const navBarInfo = await this.$t.updateCustomBar()
  44. customBarHeight = navBarInfo.customBarHeight
  45. statusBarHeight = navBarInfo.statusBarHeight
  46. } catch(e) {
  47. setTimeout(() => {
  48. this.updateCustomBarInfo()
  49. }, 10)
  50. return
  51. }
  52. }
  53. // 更新vuex中的导航栏信息
  54. this.$t.vuex('vuex_status_bar_height', statusBarHeight)
  55. this.$t.vuex('vuex_custom_bar_height', customBarHeight)
  56. }
  57. }
  58. }