vue+element ui 滚动加载


<div id="app">    <div class="infinite-list-wrapper" style="overflow:auto">        <ul class="list" v-infinite-scroll="load" infinite-scroll-disabled="disabled">            <li v-for="news in newsList" class="list-item">{{ news.newsTitle }}</li>        </ul>        <el-row style="height: 50px" v-if="loading"             v-loading="loading"             element-loading-text="拼命加载中"             element-loading-spinner="el-icon-loading"             element-loading-background="rgba(0, 0, 0, 0.3)"></el-row>        <p v-if="noMore">没有更多了</p>    </div></div>
<style>
        .infinite-list-wrapper {
            width: 100%;
            height: 300px;
            border: 1px solid rebeccapurple;
        }
        .list {
            width: 100%;
        }
        .list li {
            height: 30px;
            margin: 5px 0;
            background: #8c939d;
            list-style: decimal;
        }
        .infinite-list-wrapper p {
            text-align: center;
        }
    </style>
<script>
        (function () {
            const vm = new Vue({
                el:"#app",
                data(){
                    return {
                        loading: false,
                        newsList:[],
                        pages:1,
                        currentPage:1
                    }
                },
                computed: {
                    noMore () {
                        return this.currentPage>=this.pages;
                    },
                    disabled () {
                        return this.loading || this.noMore
                    }
                },
                methods: {
                    load () {
                        this.loading = true;
                        axios.get("/news/get",{
                            params: {
                                pageNum: vm.currentPage+1,
                                pageSize:10
                            }
                        }).then(function (response) {
                            let pageInfo = response.data;
                            console.log(pageInfo);
                            pageInfo.data.forEach(function (item) {
                                vm.newsList.push(item);
                            });
                            vm.currentPage = pageInfo.current;
                            vm.loading = false;
                        }).catch(function (error) {
                            console.log(error);
                        })
                    }
                },
                created(){
                    axios.get("/news/get",{
                        params: {
                            pageNum: 1,
                            pageSize:10
                        }
                    }).then(function (response) {
                        let pageInfo = response.data;
                        console.log(pageInfo);
                        pageInfo.data.forEach(function (item) {
                            vm.newsList.push(item);
                        });
                        vm.pages = pageInfo.pages;
                    }).catch(function (error) {
                        console.log(error);
                    })
                }
            })
        })();
</script>     

原文地址:https://www.cnblogs.com/xiaogblog/p/11659837.html

时间: 2024-08-30 12:32:09

vue+element ui 滚动加载的相关文章

基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多

通过多次爬坑,发现了这些监听滚动来加载更多的组件的共同点, 因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的, 所以是进入页面则直接触发一次,当监听到滚动事件之后,继续加载更多, 所以对于无限滚动加载不需要写首次载入列表的函数, 代码如下: html: //父组件 <div v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" infinite-scroll-distance=

手撸一个Vue滚动加载自定义指令

用Vue在移动端做滚动加载,使用mint-ui框架, InfiniteScroll指令loadmore组件,在uc浏览器和qq浏览器都无法触发.无奈我只能自己写了. 决定用vue 的自定义指令 写滚动加载. 核心的api document.body.scrollTop 滚动条滚动的距离 (这个有兼容性问题,兼容性写法) let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body

vue2.0无限滚动加载数据插件

  做vue项目用到下拉滚动加载数据功能,由于选的UI库(element)没有这个组件,就用Vue-infinite-loading 这个插件代替,使用中遇到的一些问题及使用方法,总结作记录! 安装:npm install vue-infinite-loading –save 引入 ES6 import InfiniteLoading from 'vue-infinite-loading'; export default { components: { InfiniteLoading, }, }

移动设备的HTML页面中图片实现滚动加载

如今移动互联网风靡全球,移动页面的元素也是丰富多彩,一个移动页面的图片超过10张已经是再正常不过的事情了.但是相对,很多移动用户还停留在2G,3G这样的网络中.那么这样带宽的用户,在浏览这样的页面时,要把页面加载完毕,可能就需要10s,20s甚至更多,严重影响用户的体验.针对这样的问题,让页面中的图片滚动加载(图片出现在显示器屏幕上时再加载图片)显得非常重要!这样也可以有效地节省我们服务器的带宽和解决请求大并发的问题. 1.效果图.     这是加载过程中的图片菊花显示            

js 滚动加载iframe框中内容

var isIE6 = !!window.ActiveXObject&&!window.XMLHttpRequest; //滚动加载 var scrollLoad =function(){ $("#content iframe[_src]").each(function(){ var t = $(this); if( t.offset().top<= $(document).scrollTop() + $(window).height() ) { t.attr(

滚动加载服务器端内容——例子

网页代码如下 <!doctype html> <html> <head> <meta charset="utf-8"> <title>滚动加载</title> <style> * {margin:0; padding:0; border:0;} #container {width:960px; margin:auto;} #container:after {display:block; height:0

滚动加载图片

做了一个粗糙的滚动加载图片例子,先分享一下,后续不断完善. 基本功能是这样的: 1.页面一共有7层,每一层可以认为是不同类型的商品: 2,页面初始化时,只加载第一层的图片和数据等: 3,滚动时,动态加载图片:(一层一层的加载) 4,如果已经加载过的层,不再加载. 样式:     * {      margin: 0px;      padding: 0px;     } body { background: rgb(250, 222, 222); } .container { width: 95

HTML5商城开发一 楼层滚动加载数据

对于楼层加载在以前只是个想法,从来没实现过,刚好项目中碰到,再此总结一下 场景:HTML5,局部商品列表信息滚动(局部滚动条) 1.通过jq设置subCategoryScroll的高度为屏幕显示高度(假设为100),设置productlist的高度为列表信息的实际高度(假设为300) <div id="subCategoryScroll" style="overflow: hidden; overflow-y: scroll;"> <ul clas

js滚动加载

背景 移动web开发中,为了加快响应速度,通常在服务端输出首屏页面,动态异步加载listview.而对于包含大量图片的listview,一起加载将耗费大量http请求,进而影响响应速度.滚动加载这时就可以成为一种可选的优化方案. 要点 生成的img标签用一个属性存储图片地址而不是用src document.images 获取当前img标签 isInSight: 是否有元素处于当前可视区域内 window.addEventListener('scroll', lazyLoad, false); 监