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
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
}
|