page-scroll.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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 === null || pageScroller === void 0 ? void 0 : pageScroller.forEach((scroller) => {
  8. if (typeof scroller === 'function') {
  9. scroller(event);
  10. }
  11. });
  12. };
  13. export default (funcName = 'onScroll') => {
  14. return Behavior({
  15. attached() {
  16. var _a;
  17. const page = getCurrentPage();
  18. if (!page)
  19. return;
  20. const bindScroller = (_a = this[funcName]) === null || _a === void 0 ? void 0 : _a.bind(this);
  21. if (bindScroller) {
  22. this._pageScroller = bindScroller;
  23. }
  24. if (Array.isArray(page.pageScroller)) {
  25. page.pageScroller.push(bindScroller);
  26. }
  27. else {
  28. page.pageScroller =
  29. typeof page.onPageScroll === 'function' ? [page.onPageScroll.bind(page), bindScroller] : [bindScroller];
  30. }
  31. page.onPageScroll = onPageScroll;
  32. },
  33. detached() {
  34. var _a;
  35. const page = getCurrentPage();
  36. if (!page)
  37. return;
  38. page.pageScroller = ((_a = page.pageScroller) === null || _a === void 0 ? void 0 : _a.filter((item) => item !== this._pageScroller)) || [];
  39. },
  40. });
  41. };