123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- export default {
- data() {
- return {
- position: [],
- button: {},
- btn: "[]"
- }
- },
- // computed: {
- // pos() {
- // return JSON.stringify(this.position)
- // },
- // btn() {
- // return JSON.stringify(this.button)
- // }
- // },
- watch: {
- button: {
- handler(newVal) {
- this.btn = JSON.stringify(newVal)
- },
- deep: true
- },
- show(newVal) {
- if (this.autoClose) return
- if (!this.button) {
- this.init()
- return
- }
- this.button.show = newVal
- },
- leftOptions() {
- this.init()
- },
- rightOptions() {
- this.init()
- }
- },
- created() {
- if (this.swipeaction.children !== undefined) {
- this.swipeaction.children.push(this)
- }
- },
- mounted() {
- this.init()
- },
- beforeDestroy() {
- this.swipeaction.children.forEach((item, index) => {
- if (item === this) {
- this.swipeaction.children.splice(index, 1)
- }
- })
- },
- methods: {
- init() {
- clearTimeout(this.swipetimer)
- this.swipetimer = setTimeout(() => {
- this.getButtonSize()
- }, 50)
- },
- closeSwipe(e) {
- if (!this.autoClose) return
- this.swipeaction.closeOther(this)
- },
- change(e) {
- this.$emit('change', e.open)
- let show = this.button.show
- if (show !== e.open) {
- this.button.show = e.open
- }
- },
- appTouchStart(e) {
- const {
- clientX
- } = e.changedTouches[0]
- this.clientX = clientX
- this.timestamp = new Date().getTime()
- },
- appTouchEnd(e, index, item, position) {
- const {
- clientX
- } = e.changedTouches[0]
- // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题
- let diff = Math.abs(this.clientX - clientX)
- let time = (new Date().getTime()) - this.timestamp
- if (diff < 40 && time < 300) {
- this.$emit('click', {
- content: item,
- index,
- position
- })
- }
- },
- getButtonSize() {
- const views = uni.createSelectorQuery().in(this)
- views
- .selectAll('.uni-swipe_button-group')
- .boundingClientRect(data => {
- let show = 'none'
- if (this.autoClose) {
- show = 'none'
- } else {
- show = this.show
- }
- this.button = {
- data,
- show
- }
- })
- .exec()
- }
- }
- }
|