Files
WAI_Project_UNIX/cool/scroller/index.ts

34 lines
697 B
TypeScript
Raw Normal View History

2025-08-11 23:48:02 +08:00
import { router } from "../router";
class Scroller {
list: Map<string, ((top: number) => void)[]> = new Map();
// 触发滚动
emit(top: number) {
const cbs = this.list.get(router.path()) ?? [];
cbs.forEach((cb) => {
cb(top);
});
}
// 监听页面滚动
on(callback: (top: number) => void) {
const path = router.path();
const cbs = this.list.get(path) ?? [];
cbs.push(callback);
this.list.set(path, cbs);
}
2025-10-17 23:21:37 +08:00
// 取消监听页面滚动
off = (callback: (top: number) => void) => {
const path = router.path();
const cbs = this.list.get(path) ?? [];
this.list.set(
path,
cbs.filter((cb) => cb != callback)
);
};
2025-08-11 23:48:02 +08:00
}
export const scroller = new Scroller();