HomeLease/mixins/page-scroll-mixin.js

54 lines
1.3 KiB
JavaScript
Raw Normal View History

2025-08-12 15:38:25 +08:00
/**
* 页面滚动监听 Mixin
* 用于自动处理 custom-navbar 组件的滚动事件传递
2025-08-13 11:05:40 +08:00
*
2025-08-12 15:38:25 +08:00
* 使用方法
* 1. 在页面中引入此 mixin
* 2. 确保 custom-navbar 组件有 ref="customNavbar"默认或自定义 ref
* 3. 自动处理滚动事件传递
2025-08-13 11:05:40 +08:00
*
2025-08-12 15:38:25 +08:00
* 配置选项
* - scrollRefs: 需要传递滚动事件的组件 ref 数组默认为 ['customNavbar']
2025-08-13 11:05:40 +08:00
*
2025-08-12 15:38:25 +08:00
* 使用示例
2025-08-13 11:05:40 +08:00
*
2025-08-12 15:38:25 +08:00
* // 基础用法(使用默认 ref="customNavbar"
* export default {
* mixins: [PageScrollMixin],
* // ... 其他配置
* }
2025-08-13 11:05:40 +08:00
*
2025-08-12 15:38:25 +08:00
* // 自定义 ref 名称
* export default {
* mixins: [PageScrollMixin],
* scrollRefs: ['myNavbar'], // 自定义 ref 名称
* // ... 其他配置
* }
2025-08-13 11:05:40 +08:00
*
2025-08-12 15:38:25 +08:00
* // 多个组件
* export default {
* mixins: [PageScrollMixin],
* scrollRefs: ['customNavbar', 'floatingButton'], // 多个组件
* // ... 其他配置
* }
*/
export default {
data() {
return {
// 默认的滚动组件 ref 列表
2025-08-13 11:05:40 +08:00
scrollRefs: this.$options.scrollRefs || ['customNavbar'],
}
2025-08-12 15:38:25 +08:00
},
2025-08-13 11:05:40 +08:00
2025-08-12 15:38:25 +08:00
// 页面生命周期
onPageScroll(e) {
// 自动将页面滚动事件传递给所有配置的组件
this.scrollRefs.forEach(refName => {
if (this.$refs[refName] && typeof this.$refs[refName].handlePageScroll === 'function') {
2025-08-13 11:05:40 +08:00
this.$refs[refName].handlePageScroll(e)
2025-08-12 15:38:25 +08:00
}
2025-08-13 11:05:40 +08:00
})
},
}