zoukankan      html  css  js  c++  java
  • vue插件vue-infinite-loading 加载更多用法

    首先先下载 

    npm install vue-infinite-loading --save

    下载完成后

    在需要用的页面引入该组件

    import InfiniteLoading from 'vue-infinite-loading';

    然后注册组件

    components: {
    InfiniteLoading,
    }

    写一个方法

    methods: {
                onInfinite() {//写一个方法
                    var _this = this;
                    var pagesize=3;
                _this.page+=1;
                    axios.get('../../static/json/homelist.json').then(function(data) {
                        if(data.data.DoubanHeadlines.length>0) {
                            if(pagesize*(_this.page)>=data.data.DoubanHeadlines.length) {
                                _this.$refs.infiniteLoading.$emit('$InfiniteLoading:complete');//停止加载
                            }else{
                                for(var i=pagesize*((_this.page)-1);i<pagesize*(_this.page);i++){
                            _this.homelist.push(data.data.DoubanHeadlines[i]) ;
                            _this.$refs.infiniteLoading.$emit('$InfiniteLoading:loaded');//加载
                            }
                            }
                        } else {
                            console.log("3+:" + _this.homelist.length)
                            _this.$refs.infiniteLoading.$emit('$InfiniteLoading:complete');
                        }
                    }).catch(function() {
                        console.log("ajax error")
                    });
                },
            }

    在dom结构中加入

        <infinite-loading :on-infinite="onInfinite" ref="infiniteLoading">//调用方法
                <span slot="no-more">//停止后显示的内容
                已经没有啦~~
              </span>
            </infinite-loading>

    完整例子

    <template>
        <div>
            <div class="flex_40">
                <div>
                    <ul>
                        <li>
                            <a>影院热映</a>
                        </li>
                        <li>
                            <a>欧美新榜</a>
                        </li>
                        <li>
                            <a>注册账号</a>
                        </li>
                        <li>
                            <a>登录豆瓣</a>
                        </li>
                    </ul>
                </div>
            </div>
            <div class="list-link" v-for="item in homelist">
                <a class="thumbnail">
                    <div class="content"><img :src="item.images" alt="cover">
                        <h3>{{item.title}}</h3>
                        <p>{{item.Matters}}</p>
                    </div>
                    <div class="author"><span class="name">{{item.author}}</span>
                        <span class="label">
                         {{item.label}}
                          </span>
                    </div>
                </a>
    
            </div>
            <infinite-loading :on-infinite="onInfinite" ref="infiniteLoading">
                <loading></loading>
                <span slot="no-more">
                已经没有啦~~
              </span>
            </infinite-loading>
        </div>
    </template>
    
    <script>
        import InfiniteLoading from 'vue-infinite-loading';
        import loading from "@/components/Loading"
        import axios from "axios"
        export default {
            name: "home",
            data() {
                return {
                    homelist: [],
                    isshow: false,
                    page:0
                }
            },
            components: {
                InfiniteLoading,
                loading
            },
            methods: {
                onInfinite() {
                    var _this = this;
                    var pagesize=3;
                _this.page+=1;
                    axios.get('../../static/json/homelist.json').then(function(data) {
                        if(data.data.DoubanHeadlines.length>0) {
                            if(pagesize*(_this.page)>=data.data.DoubanHeadlines.length) {
                                _this.$refs.infiniteLoading.$emit('$InfiniteLoading:complete');
                            }else{
                                for(var i=pagesize*((_this.page)-1);i<pagesize*(_this.page);i++){
                            _this.homelist.push(data.data.DoubanHeadlines[i]) ;
                            _this.$refs.infiniteLoading.$emit('$InfiniteLoading:loaded');
                            }
                            }
                        } else {
                            console.log("3+:" + _this.homelist.length)
                            _this.$refs.infiniteLoading.$emit('$InfiniteLoading:complete');
                        }
                    }).catch(function() {
                        console.log("ajax error")
                    });
                },
            }
        }
    </script>
    
    <style scoped="scoped">
        .flex_40 {
            text-align: center;
            margin: 0 1.8rem;
            padding-top: .2rem;
        }
        
        .flex_40 ul {
            overflow: hidden;
            margin: 1rem;
            padding-top: .6rem;
        }
        
        .flex_40 li {
            float: left;
             50%;
            padding: .3rem;
            box-sizing: border-box;
            font-size: 1.5rem;
        }
        .loading-default{
            background: url(../assets/loading_green.gif) no-repeat 0 0 100% !important;
        }
        .flex_40 li a {
            display: block;
            max- 100%;
            padding: 1.2rem 0;
            line-height: 2rem;
            text-align: center;
            background-color: white;
            color: #494949;
            border-radius: .2rem;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            word-wrap: normal;
        }
        
        .thumbnail {
            background-color: transparent;
            position: relative;
            display: block;
            padding: 2.5rem 1.8rem 2.5rem 0;
            margin-left: 1.8rem;
            border-bottom: 1px solid rgba(0, 0, 0, 0.05);
        }
        
        .thumbnail .content {
            overflow: hidden;
            margin-bottom: 1rem;
        }
        
        .thumbnail .content img {
            float: right;
             25.6%;
            height: 8.678rem;
            margin-left: 2.5rem;
        }
        
        .thumbnail .content h3 {
            margin-top: 0;
            margin-bottom: .6rem;
            line-height: 1.41;
            text-align: justify;
            font-size: 1.7rem;
            font-weight: 500;
            color: #494949;
        }
        
        .thumbnail .content p {
            line-height: 1.5;
            text-align: justify;
            color: #aaa;
            font-size: 1.2rem;
            overflow: hidden;
        }
        
        .author {
            font-size: 1.2rem;
            color: #ccc;
        }
        
        .label {
            position: absolute;
            bottom: 2.5rem;
            right: 1.8rem;
        }
    </style>
  • 相关阅读:
    SQL Server Audit监控触发器状态
    SQL Server 数据变更时间戳(timestamp)在复制中的运用
    SQL Server 更改跟踪(Chang Tracking)监控表数据
    SQL Server 变更数据捕获(CDC)监控表数据
    SQL Server 事件通知(Event notifications)
    SQL Server 堆表行存储大小(Record Size)
    SQL Server DDL触发器运用
    SQL Server 默认跟踪(Default Trace)
    SQL Server 创建数据库邮件
    SQL Server 跨网段(跨机房)FTP复制
  • 原文地址:https://www.cnblogs.com/zhupanpan/p/9685073.html
Copyright © 2011-2022 走看看