需求要求实现无限滚动,随手记一下。
网上找到这么一个插件 v-infinite-scroll 试了一下,可用。非常OK~
安装
npm install vue-infinite-scroll --save
使用
main.js
// register globally
import infiniteScroll from 'vue-infinite-scroll'
Vue.use(infiniteScroll)
vue 直接在需要无限滚动的标签上面加 v-infinite-scroll
<div v-infinite-scroll="loadMore" infinite-scroll-disabled="busy" infinite-scroll-distance="10">
...
</div>
这里其实我是伪懒加载哈哈哈哈哈哈哈
// 懒加载
async loadMore() {
if (this.pageListFilter.length < this.pageList.length) {
if (this.pageListIndex + 5 >= this.pageList.length) {
let arr = this.pageList.slice(this.pageListIndex, this.pageList.length);
this.pageListFilter = this.pageListFilter.concat(arr);
this.pageListIndex = this.pageList.length;
} else {
let arr = this.pageList.slice(this.pageListIndex, this.pageListIndex + 5);
this.pageListFilter = this.pageListFilter.concat(arr);
this.pageListIndex = this.pageListIndex + 5;
}
}
},
实际上是可以这样玩的
var count = 0;
new Vue({
el: '#app',
data: {
data: [],
busy: false
},
methods: {
loadMore: function() {
this.busy = true;
setTimeout(() => {
for (var i = 0, j = 10; i < j; i++) {
this.data.push({ name: count++ });
}
this.busy = false;
}, 1000);
}
}
});