You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
997 B
33 lines
997 B
import { getCurrentPage } from '../common/utils'; |
|
function onPageScroll(event) { |
|
const { vanPageScroller = [] } = getCurrentPage(); |
|
vanPageScroller.forEach((scroller) => { |
|
if (typeof scroller === 'function') { |
|
// @ts-ignore |
|
scroller(event); |
|
} |
|
}); |
|
} |
|
export const pageScrollMixin = (scroller) => |
|
Behavior({ |
|
attached() { |
|
const page = getCurrentPage(); |
|
if (Array.isArray(page.vanPageScroller)) { |
|
page.vanPageScroller.push(scroller.bind(this)); |
|
} else { |
|
page.vanPageScroller = |
|
typeof page.onPageScroll === 'function' |
|
? [page.onPageScroll.bind(page), scroller.bind(this)] |
|
: [scroller.bind(this)]; |
|
} |
|
page.onPageScroll = onPageScroll; |
|
}, |
|
detached() { |
|
var _a; |
|
const page = getCurrentPage(); |
|
page.vanPageScroller = |
|
((_a = page.vanPageScroller) === null || _a === void 0 |
|
? void 0 |
|
: _a.filter((item) => item !== scroller)) || []; |
|
}, |
|
});
|
|
|