page-scroll.js 997 B

123456789101112131415161718192021222324252627282930313233
  1. import { getCurrentPage } from '../common/utils';
  2. function onPageScroll(event) {
  3. const { vanPageScroller = [] } = getCurrentPage();
  4. vanPageScroller.forEach((scroller) => {
  5. if (typeof scroller === 'function') {
  6. // @ts-ignore
  7. scroller(event);
  8. }
  9. });
  10. }
  11. export const pageScrollMixin = (scroller) =>
  12. Behavior({
  13. attached() {
  14. const page = getCurrentPage();
  15. if (Array.isArray(page.vanPageScroller)) {
  16. page.vanPageScroller.push(scroller.bind(this));
  17. } else {
  18. page.vanPageScroller =
  19. typeof page.onPageScroll === 'function'
  20. ? [page.onPageScroll.bind(page), scroller.bind(this)]
  21. : [scroller.bind(this)];
  22. }
  23. page.onPageScroll = onPageScroll;
  24. },
  25. detached() {
  26. var _a;
  27. const page = getCurrentPage();
  28. page.vanPageScroller =
  29. ((_a = page.vanPageScroller) === null || _a === void 0
  30. ? void 0
  31. : _a.filter((item) => item !== scroller)) || [];
  32. },
  33. });