123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import { isFunction } from '../common/validator';
- import { getCurrentPage, isDef } from '../common/utils';
- function onPageScroll(event) {
- const { vanPageScroller = [] } = getCurrentPage();
- vanPageScroller.forEach((scroller) => {
- if (typeof scroller === 'function') {
- // @ts-ignore
- scroller(event);
- }
- });
- }
- export function pageScrollMixin(scroller) {
- return Behavior({
- attached() {
- const page = getCurrentPage();
- if (!isDef(page)) {
- return;
- }
- const _scroller = scroller.bind(this);
- const { vanPageScroller = [] } = page;
- if (isFunction(page.onPageScroll) && page.onPageScroll !== onPageScroll) {
- vanPageScroller.push(page.onPageScroll.bind(page));
- }
- vanPageScroller.push(_scroller);
- page.vanPageScroller = vanPageScroller;
- page.onPageScroll = onPageScroll;
- this._scroller = _scroller;
- },
- detached() {
- const page = getCurrentPage();
- if (!isDef(page) || !isDef(page.vanPageScroller)) {
- return;
- }
- const { vanPageScroller } = page;
- const index = vanPageScroller.findIndex((v) => v === this._scroller);
- if (index > -1) {
- page.vanPageScroller.splice(index, 1);
- }
- this._scroller = undefined;
- },
- });
- }
|