page-scroll.js 1.2 KB

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