scroll.vue 1.43 KB
<template>
    <Scroll :on-reach-edge="loadData">
        <section v-for="item in list">
            <div class="city">
                <p>{{ item }}</p>
            </div>
        </section>
    </Scroll>
</template>
<script>
    export default {
        data () {
            return {
                list: [1,2,3,4,5,6,7,8,9,10]
            }
        },
        methods: {
            loadData (dir) {
                return new Promise(resolve => {
                    setTimeout(() => {
                        if (dir > 0) {
                            const first = this.list[0];
                            for (let i = 1; i < 11; i++) {
                                this.list.unshift(first - i);
                            }
                        } else {
                            const last = this.list[this.list.length - 1];
                            for (let i = 1; i < 11; i++) {
                                this.list.push(last + i);
                            }
                        }
                        resolve();
                    }, 500);
                });
            }
        }
    }
</script>
<style>
    section {
        margin: 20px;
    }
    section > div {
        width: 300px;
        padding: 15px;
        margin: 5px;
        background-color: #ddf;
        border: 1px solid #446;
        border-radius: 5px;
        margin: 0 auto;
    }

    .ivu-scroll-container {
        height: 500px;
    }
</style>