page-scroll.js 1.1KB

12345678910111213141516171819202122232425262728293031323334
  1. import { getCurrentPage, isDef } 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) => Behavior({
  12. attached() {
  13. const page = getCurrentPage();
  14. if (Array.isArray(page.vanPageScroller)) {
  15. page.vanPageScroller.push(scroller.bind(this));
  16. }
  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. if (isDef(page)) {
  29. page.vanPageScroller =
  30. ((_a = page.vanPageScroller) === null || _a === void 0 ? void 0 : _a.filter((item) => item !== scroller)) || [];
  31. }
  32. },
  33. });