chore(ImagePreview): optimize event binding

This commit is contained in:
陈嘉涵 2019-12-31 14:16:12 +08:00 committed by neverland
parent b66597621c
commit 5fff24cee8

View File

@ -99,7 +99,10 @@ export default createComponent({
watch: { watch: {
value(val) { value(val) {
if (val) { if (val) {
this.onShow(); this.setActive(this.startPosition);
this.$nextTick(() => {
this.$refs.swipe.swipeTo(this.startPosition, { immediate: true });
});
} else { } else {
this.$emit('close', { this.$emit('close', {
index: this.active, index: this.active,
@ -108,39 +111,27 @@ export default createComponent({
} }
}, },
startPosition(active) { startPosition(val) {
this.setActive(active); this.setActive(val);
} },
},
mounted() { shouldRender: {
if (this.value) { handler(val) {
this.bindEvent(); if (val) {
this.$nextTick(() => {
const swipe = this.$refs.swipe.$el;
on(swipe, 'touchstart', this.onWrapperTouchStart);
on(swipe, 'touchmove', preventDefault);
on(swipe, 'touchend', this.onWrapperTouchEnd);
on(swipe, 'touchcancel', this.onWrapperTouchEnd);
});
}
},
immediate: true
} }
}, },
methods: { methods: {
onShow() {
this.bindEvent();
this.setActive(this.startPosition);
this.$nextTick(() => {
this.$refs.swipe.swipeTo(this.startPosition, { immediate: true });
});
},
bindEvent() {
if (!this.eventBinded) {
this.eventBinded = true;
this.$nextTick(() => {
const swipe = this.$refs.swipe.$el;
on(swipe, 'touchstart', this.onWrapperTouchStart);
on(swipe, 'touchmove', preventDefault);
on(swipe, 'touchend', this.onWrapperTouchEnd);
on(swipe, 'touchcancel', this.onWrapperTouchEnd);
});
}
},
onWrapperTouchStart() { onWrapperTouchStart() {
this.touchStartTime = new Date(); this.touchStartTime = new Date();
}, },