123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- Component({
- options: {
- multipleSlots: true // 在组件定义时的选项中启用多slot支持
- },
- /**
- * 组件的属性列表
- */
- properties: {
- extClass: {
- type: String,
- value: ''
- },
- title: {
- type: String,
- value: ''
- },
- background: {
- type: String,
- value: ''
- },
- color: {
- type: String,
- value: ''
- },
- back: {
- type: Boolean,
- value: true
- },
- loading: {
- type: Boolean,
- value: false
- },
- homeButton: {
- type: Boolean,
- value: false,
- },
- animated: {
- // 显示隐藏的时候opacity动画效果
- type: Boolean,
- value: true
- },
- show: {
- // 显示隐藏导航,隐藏的时候navigation-bar的高度占位还在
- type: Boolean,
- value: true,
- observer: '_showChange'
- },
- // back为true的时候,返回的页面深度
- delta: {
- type: Number,
- value: 1
- },
- },
- /**
- * 组件的初始数据
- */
- data: {
- displayStyle: ''
- },
- lifetimes: {
- attached() {
- const rect = wx.getMenuButtonBoundingClientRect()
- const wxDeviceInfo = wx.getDeviceInfo()
- const wxWindowInfo = wx.getWindowInfo()
- const isAndroid = wxDeviceInfo.platform === 'android'
- const isDevtools = wxDeviceInfo.platform === 'devtools'
- this.setData({
- ios: !isAndroid,
- innerPaddingRight: `padding-right: ${wxWindowInfo.windowWidth - rect.left}px;`,
- leftWidth: `width: ${wxWindowInfo.windowWidth - rect.left }px;`,
- safeAreaTop: isDevtools || isAndroid ? `height: calc(var(--height) + ${wxWindowInfo.safeArea.top}px); padding-top: ${wxWindowInfo.safeArea.top}px;` : ``
- })
- },
- },
- /**
- * 组件的方法列表
- */
- methods: {
- _showChange(show: boolean) {
- const animated = this.data.animated
- let displayStyle = ''
- if (animated) {
- displayStyle = `opacity: ${
- show ? '1' : '0'
- };transition:opacity 0.5s;`
- } else {
- displayStyle = `display: ${show ? '' : 'none'}`
- }
- this.setData({
- displayStyle
- })
- },
- back() {
- const data = this.data
- if (data.delta) {
- wx.navigateBack({
- delta: data.delta
- })
- }
- this.triggerEvent('back', { delta: data.delta }, {})
- }
- },
- })
|