page.ts 881 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. export function usePage(): Page {
  43. return new Page();
  44. }