const scrollevents = { sourceUp:function(e){ var obj = { scrolltop:0, distance:0, startdot:"" } this.setData({ scrollsource:Object.assign(this.data.scrollsource,obj) }) }, sourceScroll:function(e){ var scrolltop = e.detail.scrollTop; var obj = {scrolltop:scrolltop}; if(scrolltop&&this.data.scrollsource.startdot){ obj.startdot = ""; obj.distance = 0; obj.scrolltop = 0 this.setData({ scrollsource:Object.assign(this.data.scrollsource,obj) }) }else{ this.setData({ scrollsource:Object.assign(this.data.scrollsource,{ scrolltop:scrolltop }) }) } }, sourceMove:function(e){ var source = this.data.scrollsource if(e.timeStamp-source.timeStamp>200){ if(source.startdot){ var startdot = source.startdot; var enddot = e.changedTouches[0]; var distance = enddot.pageY-startdot.pageY; this.setData({ scrollsource:Object.assign(source,{distance:distance}) }) }else if(!source.scrolltop){ var startdot = e.changedTouches[0]; this.setData({ scrollsource:Object.assign(source,{ startdot:startdot, timeStamp:e.timeStamp }), }) } } //console.log("consoleMove",e) }, sourceStart:function(e){ //console.log("sourceStart",e) var startdot = e.changedTouches[0]; this.setData({ scrollsource:Object.assign(this.data.scrollsource,{ startdot:startdot, timeStamp:e.timeStamp }) }); }, sourceEnd:function(e){ this.setData({ scrollsource:Object.assign(this.data.scrollsource,{ distance:0, startdot:"" }) }) //console.log("consoleEnd",e) } } export default function(item){ item.setData({ scrollsource:{ scrolltop:0 } }) Object.assign(item,scrollevents); }