uniapp页面滚动监听

52 篇文章 1 订阅

先在前面总结下,下面一共有3种监听滚动的方法。

昨天在做uniapp的图片懒加载,从网上找了个插件,导入到HBuilderX后,捣鼓了一晚上,总算是正常跑起来了。

今天早上,把代码copy到项目上,结果只有第一屏的图片能展示,滑动后,下面的图片都不显示了!-_-!

因为有了昨晚的经验,很快就定位到问题是滚动监听出现了问题。

这个插件的图片懒加载一个关键的地方就是用到滚动监听。

第一种

在普通页面可以用生命周期的“onPageScroll”方法,如下:

onPageScroll(e) {
	// 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
	this.scrollTop = e.scrollTop;
},

(这里说下,找到的插件里用的是“Scroll”这个方法,不过据说被过滤了,用不了)

第二种

因为项目中,图片是在子组件里的,“onPageScroll”方法在这也不好使了!!好在找到了另外一个方法:子组件和父组件绑定、通信。

//主页面正常使用这个生命周期的方法
onPageScroll(res) {
	uni.$emit('onPageScroll', res.scrollTop);//传递参数
},

//子组件使用“mounted”这个生命周期方法
mounted() {
	var that = this;
	uni.$on('onPageScroll', function(data) {//接收参数
		console.log(data);
		that.scrollTop = data;
	});
},

本以为到这就可以解决问题了,但是,上面这种方法监听的滚动是页面的,所以如果内容是在“scroll-view”这个组件里面,结果就是:这种方法也失效!

第三种

后面,只能使用“scroll-view”这个组件的@scroll属性了。

//组件中设置这个属性
<scroll-view scroll-y class="page"  @scroll="scroll">

//export default的methods里面定义scroll方法,接收数据
scroll(event) {
	// 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
	this.scrollTop = event.detail.scrollTop;//这里的detail里有多个数据,可打印出来,根据需要使用
},

好了,经过测试,这第三种方法总算是满足我的需求了!!:)

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uniapp中,你可以通过以下几种方式监听页面滚动高度: 1. 使用生命周期的onPageScroll方法。在普通页面中,你可以在onPageScroll方法中传入scrollTop值,并触发所有easy-loadimage组件下的滚动监听事件。具体代码如下: ```javascript onPageScroll(e) { this.scrollTop = e.scrollTop; // 传入scrollTop值 // 触发所有easy-loadimage组件下的滚动监听事件 }, ``` \[1\] 2. 使用window.onscroll事件。为了保证兼容性,你可以取三个值中的任意一个来获取滚动高度,即window.pageYOffset、document.documentElement.scrollTop和document.body.scrollTop。具体代码如下: ```javascript window.onscroll = function () { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; // 获取滚动高度 console.log("滚动距离" + scrollTop); } ``` \[2\] 3. 使用scroll-view标签。在uniapp中,你可以使用scroll-view标签来实现滚动条,并监听滚动事件。具体代码如下: ```html <scroll-view scroll-y="true" class="scroll-Y" @scrolltoupper="upper" @scrolltolower="lower" @scroll="scroll"></scroll-view> ``` \[3\] 以上是uniapp监听页面滚动高度的几种方式,你可以根据自己的需求选择其中一种来实现。 #### 引用[.reference_title] - *1* [uniapp页面滚动监听](https://blog.csdn.net/chenrui310/article/details/128536818)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [uniapp监听页面滚动h5监听页面滚动](https://blog.csdn.net/gcyaozuodashen/article/details/125327848)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [uniapp 小程序 监听数据渲染完毕 获取高度 滚动滚动到最底部](https://blog.csdn.net/qq_47247479/article/details/128203828)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值