You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.1 KiB
87 lines
2.1 KiB
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 |
|
}
|
|
|