From 7bc8c5022ac7835fe23c33f2d4f73f12b93be34b Mon Sep 17 00:00:00 2001 From: Kay Date: Wed, 9 Aug 2017 14:48:46 +0800 Subject: [PATCH] Fixed: one page Swipe components error (#70) --- packages/swipe/src/scroll.js | 12 ++++++------ packages/swipe/src/swipe-item.vue | 7 +++++++ packages/swipe/src/swipe.vue | 27 ++++++++++++++++++++------- 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/packages/swipe/src/scroll.js b/packages/swipe/src/scroll.js index d70b1aba1..988e74e49 100755 --- a/packages/swipe/src/scroll.js +++ b/packages/swipe/src/scroll.js @@ -69,12 +69,6 @@ extend(Scroll.prototype, { var leftOffset = offset - wrapWidth; var rightOffset = offset + wrapWidth; - page = this.getCurrentPage(); - if (page) { - page.style['-webkit-transform'] = 'translate3d(' + offset + 'px, 0, 0)'; - page.style['display'] = 'block'; - } - leftPage = this.pages[this.mapLoopPage(currentOffsetPage - 1)]; if (leftPage) { if (Math.abs(leftOffset) <= wrapWidth) { @@ -96,6 +90,12 @@ extend(Scroll.prototype, { } } } + + page = this.getCurrentPage(); + if (page) { + page.style['-webkit-transform'] = 'translate3d(' + offset + 'px, 0, 0)'; + page.style['display'] = 'block'; + } }, movePage: function(dist, isEnd) { diff --git a/packages/swipe/src/swipe-item.vue b/packages/swipe/src/swipe-item.vue index ba4489474..dafed2fd2 100644 --- a/packages/swipe/src/swipe-item.vue +++ b/packages/swipe/src/swipe-item.vue @@ -10,6 +10,13 @@ export default { beforeCreate() { this.$parent.swipes.push(this); + }, + + destroyed() { + const index = this.$parent.swipes.indexOf(this) + if (index > -1) { + this.$parent.swipes.splice(index, 1) + } } }; diff --git a/packages/swipe/src/swipe.vue b/packages/swipe/src/swipe.vue index 5063cf8e2..4b6d818b6 100644 --- a/packages/swipe/src/swipe.vue +++ b/packages/swipe/src/swipe.vue @@ -36,11 +36,6 @@ export default { }, mounted() { - const pages = this.$el.querySelectorAll('.van-swipe-item') - if (pages.length <= 1) { - return - } - this.input = new Input(this.$el, { listenMoving: true }); @@ -66,10 +61,28 @@ export default { }).on('autoPlay', function(dist, isEnd) { scroll.movePage(dist.x, isEnd); }); + this.dummy = dummy }, - updated() { - this.scroll.update(); + watch: { + swipes(value) { + if (this.autoPlay && value.length > 1) { + this.dummy.initMove() + } else { + this.dummy.clearMove() + } + this.scroll.update(); + return value + }, + + autoPlay(value) { + if (value && this.swipes.length > 1) { + this.dummy.initMove() + } else { + this.dummy.clearMove() + } + return value + } }, methods: {