| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | 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 || 26}px); padding-top: ${wxWindowInfo.safeArea.top || 26}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 }, {})    }  },})
 |