page.ts 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { router, scroller, useParent } from "@/cool";
  2. class Page {
  3. pageRef: ClPageComponentPublicInstance | null = null;
  4. constructor() {
  5. this.pageRef = useParent<ClPageComponentPublicInstance>("cl-page");
  6. }
  7. /**
  8. * 获取页面路径
  9. * @returns 页面路径
  10. */
  11. path = () => {
  12. return router.path();
  13. };
  14. /**
  15. * 获取滚动位置
  16. * @returns 滚动位置
  17. */
  18. getScrollTop = (): number => {
  19. return this.pageRef!.scrollTop as number;
  20. };
  21. /**
  22. * 滚动到指定位置
  23. * @param top 滚动位置
  24. */
  25. scrollTo = (top: number) => {
  26. this.pageRef!.scrollTo(top);
  27. };
  28. /**
  29. * 回到顶部
  30. */
  31. scrollToTop = () => {
  32. this.pageRef!.scrollToTop();
  33. };
  34. /**
  35. * 监听页面滚动
  36. * @param callback 回调函数
  37. */
  38. onScroll = (callback: (top: number) => void) => {
  39. scroller.on(callback);
  40. };
  41. /**
  42. * 取消监听页面滚动
  43. * @param callback 回调函数
  44. */
  45. offScroll = (callback: (top: number) => void) => {
  46. scroller.off(callback);
  47. };
  48. }
  49. export function usePage(): Page {
  50. return new Page();
  51. }