小程序之设置 scroll-view区域 滚动到最底部

本文介绍两种方法实现微信小程序scroll-view组件自动滚动至底部的功能。方法一通过设置scroll-top属性值,方法二利用scroll-into-view属性绑定,确保聊天记录实时更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考网址
https://blog.youkuaiyun.com/aydongzhiping/article/details/79976846
https://blog.youkuaiyun.com/java558/article/details/86001064

注意,如果按以下两种方法中的步骤,都未实现效果,请检查

1  scroll-view 的style样式中,height 值不能为 100%

2  请打印所遍历的数组 this.data.consult.length 是否有值

方法1

通过绑定 scroll-view 的 scroll-top 属性,在每次监听到事件或者websocket回调时设置其值,当大于scroll-view的列表高度的时候就会显示到最底部了。

wxml

<scroll-view scroll-y='true' scroll-top="{{scrollTop}}"><scroll-view>

js

Page({
  data:{
    scrollTop: 0;
  },
  sendMessage: function(){
    var len = this.data.consult.length //遍历的数组的长度
      this.setData({
        scrollTop: 1000 * len  // 这里我们的单对话区域最高1000,取了最大值,应该有方法取到精确的
      });
  }
})

方法2

通过 scroll-into-view=’{{toView}}’ 属性来控制

步骤

将所有msg都编号如:msg-0,msg-1,msg-2… 直接锁定最后一条msg,滚动到那里。
在scroll-view中添加:scroll-into-view='{{toView}}',
在wx:for后面添加:wx:for-index="index",
在每个msg布局中添加:id='msg-{{index}}',
最后直接:

this.setData({
	toView: 'msg-' + (msgList.length - 1)
})

wxml

<scroll-view scroll-y="true" scroll-into-view="{{toView}}" class="history" scroll-top="{{scrollTop}}" >
 <block wx:for="{{history}}" wx:for-index="index" wx:key='key'>   
      <view class="chat-news" wx:if="{{item.uid == session_id}}"  id="msg-{{index}}">
          自己的历史消息 msg-{{index}}
          <view style="text-align: right;padding-right: 20rpx;">
              <image class='new_img' src="{{userInfo.avatarUrl}}"></image>
          </view>
      </view> 
   </block>
</scroll-view>

js

Page({
  data:{
    scrollTop: 0,
    toView:''
  },
  sendMessage: function(){
  
    var len = res.data.shuju.length;
    console.log(len);
    
    if(res.data.status == 1){
      that.setData({
        history: res.data.shuju,
        toView: 'msg-' + (res.data.shuju.length - 1)
      });
  }
  
})
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值