Loading

使用 Vue 的 Vant.js List 列表组件实现无限下拉

摘自:https://www.sunzhongwei.com/using-vue-vant-js-list-component-implementation-infinite-drop-down-list?from=sidebar_new

拉取历史记录,并在前端做无限下拉展示,是一个非常常见的使用场景。

最近在使用的 Vant (轻量、可靠的移动端 Vue 组件库),实现起来就非常方便。

模板实现代码

<div id="app" v-cloak>
    <van-list
      v-model="loading"
      :finished="finished"
      finished-text="暂无更多数据"
      @load="load_more_items"
    >
        <van-cell
          v-for="item in items"
          :key="item"
          :title="item.name"
          :value="item.created_at"
          />
    </van-list>
</div>

Vue.js 实现代码

new Vue({
    el: '#app',

    data: {
        items: [],
        finished: false,
        loading: false,
        offset: 0,
        page: 0,
        limit: 10,
    },

    mounted: function() {
        this.fetch_items();
    },

    methods: {
        load_more_items: function() {
            this.page += 1;
            this.offset = this.limit * this.page;
            this.fetch_items();
        },

        fetch_items: function() {
            var that = this;

            $.ajax({
                url: `/api/get_items?offset=${this.offset}&limit=${this.limit}`,
                type: 'get',
                dataType: 'json',
                success: function(data) {
                    that.loading = false;
                    if (data.data.length) {
                        that.items.push(...data.data);
                    } else {
                        that.finished = true;
                    }
                }
            });
        }
    }
});
posted @ 2019-12-19 10:51  Sam Xiao  阅读(2980)  评论(2编辑  收藏  举报