76 lines
1.6 KiB
JavaScript
76 lines
1.6 KiB
JavaScript
|
|
// components/navbar/navbar.js
|
|||
|
|
Component({
|
|||
|
|
properties: {
|
|||
|
|
// 标题
|
|||
|
|
title: {
|
|||
|
|
type: String,
|
|||
|
|
value: ''
|
|||
|
|
},
|
|||
|
|
// 是否显示返回按钮
|
|||
|
|
showBack: {
|
|||
|
|
type: Boolean,
|
|||
|
|
value: true
|
|||
|
|
},
|
|||
|
|
// 返回按钮文字
|
|||
|
|
backText: {
|
|||
|
|
type: String,
|
|||
|
|
value: '返回'
|
|||
|
|
},
|
|||
|
|
// 背景色(支持渐变)
|
|||
|
|
background: {
|
|||
|
|
type: String,
|
|||
|
|
value: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)'
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
data: {
|
|||
|
|
statusBarHeight: 0,
|
|||
|
|
menuButtonTop: 0,
|
|||
|
|
menuButtonHeight: 0,
|
|||
|
|
navbarHeight: 0
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
lifetimes: {
|
|||
|
|
attached() {
|
|||
|
|
this.setNavBarInfo()
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
methods: {
|
|||
|
|
// 设置导航栏信息
|
|||
|
|
setNavBarInfo() {
|
|||
|
|
const windowInfo = wx.getWindowInfo()
|
|||
|
|
const menuButtonInfo = wx.getMenuButtonBoundingClientRect()
|
|||
|
|
|
|||
|
|
const statusBarHeight = windowInfo.statusBarHeight
|
|||
|
|
const menuButtonTop = menuButtonInfo.top
|
|||
|
|
const menuButtonHeight = menuButtonInfo.height
|
|||
|
|
|
|||
|
|
// 导航栏总高度 = 胶囊按钮bottom + 胶囊按钮到顶部的距离
|
|||
|
|
const navbarHeight = menuButtonInfo.bottom + (menuButtonTop - statusBarHeight)
|
|||
|
|
|
|||
|
|
this.setData({
|
|||
|
|
statusBarHeight,
|
|||
|
|
menuButtonTop,
|
|||
|
|
menuButtonHeight,
|
|||
|
|
navbarHeight
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 返回按钮点击
|
|||
|
|
onBackTap() {
|
|||
|
|
this.triggerEvent('back')
|
|||
|
|
|
|||
|
|
// 如果没有监听back事件,默认返回上一页
|
|||
|
|
const pages = getCurrentPages()
|
|||
|
|
if (pages.length > 1) {
|
|||
|
|
wx.navigateBack()
|
|||
|
|
} else {
|
|||
|
|
wx.switchTab({
|
|||
|
|
url: '/pages/index/index'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|