page-scroll.js 879 B

12345678910111213141516171819202122232425262728
  1. function getCurrentPage() {
  2. const pages = getCurrentPages();
  3. return pages[pages.length - 1] || {};
  4. }
  5. function onPageScroll(event) {
  6. const { vanPageScroller = [] } = getCurrentPage();
  7. vanPageScroller.forEach((scroller) => {
  8. if (typeof scroller === 'function') {
  9. scroller(event);
  10. }
  11. });
  12. }
  13. export const pageScrollMixin = (scroller) => Behavior({
  14. attached() {
  15. const page = getCurrentPage();
  16. if (Array.isArray(page.vanPageScroller)) {
  17. page.vanPageScroller.push(scroller.bind(this));
  18. }
  19. else {
  20. page.vanPageScroller = [page.onPageScroll, scroller.bind(this)];
  21. }
  22. page.onPageScroll = onPageScroll;
  23. },
  24. detached() {
  25. const page = getCurrentPage();
  26. page.vanPageScroller = (page.vanPageScroller || []).filter(item => item !== scroller);
  27. }
  28. });