提交 cb3ec1ab 编写于 作者: D DCloud_LXH

fix: scroll-view refresherTriggered

上级 7a790bc2
...@@ -196,7 +196,14 @@ export default { ...@@ -196,7 +196,14 @@ export default {
}, },
mounted () { mounted () {
var self = this var self = this
var touchStart = null
var needStop = null
this._attached = true this._attached = true
this.toUpperNumber = 0 // 容器触顶时,此时鼠标Y轴位置
this.triggerAbort = false
this.beforeRefreshing = false
this._scrollTopChanged(this.scrollTopNumber) this._scrollTopChanged(this.scrollTopNumber)
this._scrollLeftChanged(this.scrollLeftNumber) this._scrollLeftChanged(this.scrollLeftNumber)
this._scrollIntoViewChanged(this.scrollIntoView) this._scrollIntoViewChanged(this.scrollIntoView)
...@@ -205,11 +212,6 @@ export default { ...@@ -205,11 +212,6 @@ export default {
event.stopPropagation() event.stopPropagation()
self._handleScroll.bind(self, event)() self._handleScroll.bind(self, event)()
} }
var touchStart = null
var needStop = null
let toUpperNumber = 0 // 容器触顶时,此时鼠标Y轴位置
let triggerAbort = false
let beforeRefreshing = false
this.__handleTouchMove = function (event) { this.__handleTouchMove = function (event) {
var x = event.touches[0].pageX var x = event.touches[0].pageX
...@@ -258,14 +260,14 @@ export default { ...@@ -258,14 +260,14 @@ export default {
if (self.refresherEnabled && self.refreshState === 'pulling') { if (self.refresherEnabled && self.refreshState === 'pulling') {
const dy = y - touchStart.y const dy = y - touchStart.y
if (toUpperNumber === 0) { if (self.toUpperNumber === 0) {
toUpperNumber = y self.toUpperNumber = y
} }
if (!beforeRefreshing) { if (!self.beforeRefreshing) {
self.refresherHeight = y - toUpperNumber self.refresherHeight = y - self.toUpperNumber
// 之前为刷新状态则不再触发pulling // 之前为刷新状态则不再触发pulling
if (self.refresherHeight > 0) { if (self.refresherHeight > 0) {
triggerAbort = true self.triggerAbort = true
self.$trigger('refresherpulling', event, { self.$trigger('refresherpulling', event, {
deltaY: dy deltaY: dy
}) })
...@@ -273,7 +275,7 @@ export default { ...@@ -273,7 +275,7 @@ export default {
} else { } else {
self.refresherHeight = dy + self.refresherThreshold self.refresherHeight = dy + self.refresherThreshold
// 如果之前在刷新状态,则不触发刷新中断 // 如果之前在刷新状态,则不触发刷新中断
triggerAbort = false self.triggerAbort = false
} }
const route = self.refresherHeight / self.refresherThreshold const route = self.refresherHeight / self.refresherThreshold
...@@ -298,20 +300,9 @@ export default { ...@@ -298,20 +300,9 @@ export default {
disable: false disable: false
}) })
if (self.refresherHeight >= self.refresherThreshold) { if (self.refresherHeight >= self.refresherThreshold) {
self.refresherHeight = self.refresherThreshold
self.refreshState = 'refreshing'
// 之前是刷新状态则不再触发刷新
if (beforeRefreshing) return
beforeRefreshing = true
self._setRefreshState('refreshing') self._setRefreshState('refreshing')
} else { } else {
beforeRefreshing = false self._setRefreshState('refresherabort')
self.refreshState = 'refresherabort'
self.refresherHeight = toUpperNumber = 0
if (triggerAbort) {
triggerAbort = false
self.$trigger('refresherabort', event, {})
}
} }
} }
this.$refs.main.addEventListener('touchstart', this.__handleTouchStart, passiveOptions) this.$refs.main.addEventListener('touchstart', this.__handleTouchStart, passiveOptions)
...@@ -521,11 +512,25 @@ export default { ...@@ -521,11 +512,25 @@ export default {
switch (state) { switch (state) {
case 'refreshing': case 'refreshing':
this.refresherHeight = this.refresherThreshold this.refresherHeight = this.refresherThreshold
this.$trigger('refresherrefresh', event, {}) // 之前是刷新状态则不再触发刷新
if (!this.beforeRefreshing) {
this.beforeRefreshing = true
this.$trigger('refresherrefresh', {}, {})
this.$emit('update:refresherTriggered', true)
}
break break
case 'restore': case 'restore':
this.refresherHeight = 0 case 'refresherabort':
this.$trigger('refresherrestore', {}, {}) this.beforeRefreshing = false
this.refresherHeight = this.toUpperNumber = 0
if (state === 'restore') {
this.triggerAbort = false
this.$trigger('refresherrestore', {}, {})
}
if (state === 'refresherabort' && this.triggerAbort) {
this.triggerAbort = false
this.$trigger('refresherabort', {}, {})
}
break break
} }
this.refreshState = state this.refreshState = state
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册