vue mintui项目中loader上拉刷新的坑

在mintui项目的列表页中需要需要上拉加载更多数据,遇到了很多坑:

1、上拉不起作用
mt-loadmore父级必须添加滚动的css

overflow: scroll;

2、页面还没有滚动到底部 loadBottom事件就已经出发
首页要给mt-loadmore父级给一个高度

<div class="news-list" :style="{ height: wrapperHeight + 'px' }" ref="wrapper">
            <mt-loadmore
            :top-method="loadTop"
            :bottom-method="loadBottom"
            :auto-fill="false" //必须,若为真,loadmore 会自动检测并撑满其容器
            :bottom-all-loaded="allLoaded"
            ref="loadmore">
            <ul>
                <li class="news-item" v-for="(item,index) in newsLists" :key="index">
                    <router-link :to="{ name:'newsDetail', params: {id: item.newsId} }">
                        <div class="news-img">
                            <img v-lazy="item.newsImage" alt="item.newsTitle" srcset="">
                        </div>
                        <div class="news-content">
                            <div class="news-title">
                                {{item.newsTitle}}
                            </div>
                            <div class="news-desc">
                                <p class="news-summary">{{item.newsMsg}}</p>
                                <p>
                                    <span class="news-parise">点赞数:{{item.newsParise}}</span>
                                    <span class="news-time">发表时间:{{item.newsDate}}</span>
                                    </p>
                            </div>
                        </div>
                    </router-link>
                </li>
            </ul>
            </mt-loadmore>
        </div>
<script>
import Axios from 'axios'

export default {
    name: 'news',
    data () {
        return {
            newsLists: '',
            page: 0,
            number: 10,
            loading: true,
            allLoaded: false,
            wrapperHeight: 0
        }
    },
    mounted () {
        this.wrapperHeight = document.documentElement.clientHeight - this.$refs.wrapper.getBoundingClientRect().top
    },
    created () {
        this.getNewsLstData(0)
    },
    methods: {
        getNewsLstData (page) {
            Axios.post('/api/getNewsData')
                .then((res) => {
                    let tolto = (page + 1) * this.number
                    let total = res.data.data.length
                    if (tolto >= total) {
                        tolto = total
                        this.allLoaded = true //判断数据是否加载完成
                    }
                    this.newsLists = page > 0 ? this.newsLists.concat(res.data.data.slice(page * this.number, (page + 1) * this.number)) : res.data.data.slice(page, tolto)
                }).catch((err) => {
                    console.log('新闻列表数据获取失败', err)
                })
        },
        loadTop () {
            this.getNewsLstData(this.page)
            this.$refs.loadmore.onBottomLoaded()
            this.topStatus = false
        },
        loadBottom () {
            if (!this.allLoaded) {
                this.page++
                this.getNewsLstData(this.page)
            } else {
                console.log('已加载全部')
            }
            this.$refs.loadmore.onBottomLoaded() // 通知loadmore组件从新渲染,计算 必须
        }
    }
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值