var pullDown = { threshold: 95, maxHeight: 200, callRefresh: 'onrefresh', callPullingDown: 'onpullingdown', refreshSelector: '.uni-refresh' }; function ready(newValue, oldValue, ownerInstance, instance) { var state = instance.getState() state.canPullDown = newValue; // console.log(newValue); } function touchStart(e, instance) { var state = instance.getState(); state.refreshInstance = instance.selectComponent(pullDown.refreshSelector); state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined); if (!state.canPullDown) { return } // console.log("touchStart"); state.height = 0; state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY; state.refreshInstance.setStyle({ 'height': 0 }); state.refreshInstance.callMethod("onchange", true); } function touchMove(e, ownerInstance) { var instance = e.instance; var state = instance.getState(); if (!state.canPullDown) { return } var oldHeight = state.height; var endY = e.touches[0].pageY || e.changedTouches[0].pageY; var height = endY - state.touchStartY; if (height > pullDown.maxHeight) { return; } var refreshInstance = state.refreshInstance; refreshInstance.setStyle({ 'height': height + 'px' }); height = height < pullDown.maxHeight ? height : pullDown.maxHeight; state.height = height; refreshInstance.callMethod(pullDown.callPullingDown, { height: height }); } function touchEnd(e, ownerInstance) { var state = e.instance.getState(); if (!state.canPullDown) { return } state.refreshInstance.callMethod("onchange", false); var refreshInstance = state.refreshInstance; if (state.height > pullDown.threshold) { refreshInstance.callMethod(pullDown.callRefresh); return; } refreshInstance.setStyle({ 'height': 0 }); } function propObserver(newValue, oldValue, instance) { pullDown = newValue; } module.exports = { touchmove: touchMove, touchstart: touchStart, touchend: touchEnd, propObserver: propObserver }