2025-08-11 23:48:02 +08:00
|
|
|
import { router, scroller, useParent } from "@/cool";
|
2025-08-11 19:14:03 +08:00
|
|
|
|
|
|
|
|
class Page {
|
|
|
|
|
pageRef: ClPageComponentPublicInstance | null = null;
|
|
|
|
|
|
|
|
|
|
constructor() {
|
|
|
|
|
this.pageRef = useParent<ClPageComponentPublicInstance>("cl-page");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取页面路径
|
|
|
|
|
* @returns 页面路径
|
|
|
|
|
*/
|
2025-08-11 23:48:02 +08:00
|
|
|
path = () => {
|
2025-08-11 19:14:03 +08:00
|
|
|
return router.path();
|
2025-08-11 23:48:02 +08:00
|
|
|
};
|
2025-08-11 19:14:03 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取滚动位置
|
|
|
|
|
* @returns 滚动位置
|
|
|
|
|
*/
|
2025-08-11 23:48:02 +08:00
|
|
|
getScrollTop = (): number => {
|
2025-08-11 19:14:03 +08:00
|
|
|
return this.pageRef!.scrollTop as number;
|
2025-08-11 23:48:02 +08:00
|
|
|
};
|
2025-08-11 19:14:03 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 滚动到指定位置
|
|
|
|
|
* @param top 滚动位置
|
|
|
|
|
*/
|
2025-08-11 23:48:02 +08:00
|
|
|
scrollTo = (top: number) => {
|
2025-08-11 19:14:03 +08:00
|
|
|
this.pageRef!.scrollTo(top);
|
2025-08-11 23:48:02 +08:00
|
|
|
};
|
2025-08-11 19:14:03 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 回到顶部
|
|
|
|
|
*/
|
2025-08-11 23:48:02 +08:00
|
|
|
scrollToTop = () => {
|
2025-08-11 19:14:03 +08:00
|
|
|
this.pageRef!.scrollToTop();
|
2025-08-11 23:48:02 +08:00
|
|
|
};
|
2025-08-11 19:14:03 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 监听页面滚动
|
|
|
|
|
* @param callback 回调函数
|
|
|
|
|
*/
|
2025-08-11 23:48:02 +08:00
|
|
|
onScroll = (callback: (top: number) => void) => {
|
|
|
|
|
scroller.on(callback);
|
|
|
|
|
};
|
2025-08-11 19:14:03 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function usePage(): Page {
|
|
|
|
|
return new Page();
|
|
|
|
|
}
|