2017-07-31 18 views
7

Tôi đang sử dụng plugin PullToRefresh này:pulltorefresh.js - Vô hiệu hóa tạm thời

https://github.com/BoxFactura/pulltorefresh.js#api

Nó hoạt động tốt nhưng tôi có một popup trên trang của mình với cuộn div inline. Vấn đề là khi tôi muốn cuộn lên (trong div) PullToRefresh được kích hoạt. Có thể "xóa" hoặc tạm thời vô hiệu hóa PullToRefresh khi cửa sổ bật lên của tôi được mở không?

PullToRefresh.init({ 
    mainElement: 'body', 
    onRefresh: function(){ 
     refreshAll(); 
    } 
}); 

chỉnh sửa: delete PullToRefresh; // không làm việc

edit2: https://github.com/BoxFactura/pulltorefresh.js/blob/master/dist/pulltorefresh.js

Trả lời

6

PullToRefresh.init() sẽ trả về một đối tượng với một hàm destroy() như callback: https://github.com/BoxFactura/pulltorefresh.js/blob/master/dist/pulltorefresh.js#L326

var refresher = PullToRefresh.init({ 
    mainElement: 'body', 
    onRefresh: function(){ 
     refreshAll(); 
    } 
}); 

// destroy the PullToRefresh EventListeners when you open your popup 
refresher.destroy() 

Ngoài ra còn có một vấn đề Github mở ab cải thiện cách phá hủy thư viện này sau khi khởi tạo: https://github.com/BoxFactura/pulltorefresh.js/issues/22

0

IMO có hai hợp lý cách để thực hiện việc này.

Bạn có thể định nghĩa một triggerElement và đặt lớp phủ của bạn bên ngoài của triggerElement này:

PullToRefresh.init({ 
    mainElement: 'body', 
    triggerElement: '#mainContent', 
    onRefresh: refreshAll 
}); 

với một đánh dấu phần nào giống như

<body> 
    <div id="containerForOverlays"></div> 
    <div id="mainContent"></div> 
</body> 

cách này, tất cả mọi thứ bên trong #containerForOverlays sẽ không kích hoạt Làm tươi.


Hoặc bạn có thể sử dụng móc mới shouldPullToRefresh() nếu phiên bản của bạn đã hỗ trợ nó.

Một ví dụ nơi PullToRefresh phụ thuộc vào một hộp kiểm để được kiểm tra

<label><input id="refresh" type="checkbox"> Pull to Refresh?</label> 

sử dụng nó như

PullToRefresh.init({ 
    mainElement: 'body', 
    shouldPullToRefresh: function(){ 
     return document.getElementById('pullToRefresh').checked 
    }, 
    onRefresh: refreshAll 
}); 

Đương nhiên là tôi không gợi ý rằng bạn sử dụng một hộp kiểm trong mã sản xuất của bạn. Tôi chỉ muốn hiển thị cách bạn có thể tự động "bật PullToRefresh bật và tắt". Trong ví dụ này, tùy thuộc vào hộp kiểm được chọn.

Tùy thuộc vào bạn để thực hiện đúng shouldPullToRefresh() để đơn đăng ký của bạn xác định thời gian PullToRefresh có nên hoạt động hay không.

Các vấn đề liên quan