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
							 | 
						|
								}
							 |