所以我试图通过惯性vue和axios延迟加载无限滚动的文章,后端是laravel 6.0。因为我不想做不必要的请求,所以我将文章的总量提供给组件。我还在跟踪组件数据中已加载文章的数量。
props: {
article_count: Number,
},
data: function () {
return {
loaded: 0,
scrolledToBottom: false,
articles: [],
}
},
加载的文章都被放入articles
,并scrolledToBottom
跟踪用户是否滚动到底部。我已经检查过是否this
引用了 vue 组件并具有数据属性,它确实如此。
methods: {
load: function (nextToLoad) {
for (let i = nextToLoad; i < nextToLoad + 10; i++){
if (this.loaded <= this.article_count){
this.$axios.get(route('api_single_article', i))
.then(response => {
if (response.status == 200 && response.data != null) {
console.log(this.loaded);
this.articles.push(response.data);
}
this.loaded++;
})
.catch(error => {
if (error.response.status != 404) {
console.log(error);
console.log(this.loaded);
this.loaded++;
}
});
}
}
console.log(this.loaded);
},
scroll: function () {
window.onscroll = () => {
let bottomOfWindow = document.documentElement.scrollTop + window.innerHeight === document.documentElement.offsetHeight;
if (bottomOfWindow) {
this.load(this.loaded + 1);
}
}
}
}
奇怪的是,如果我登录this.loaded
响应/错误箭头函数,它总是返回 0。如果我在响应之外执行它也返回 0,但是如果我在循环运行后记录this
该属性具有假定的值,loaded
尽管每次运行循环时都会记录它。我已经向朋友展示了这个,他也无法修复它。这种行为对我来说似乎很奇怪,我不知道我应该怎么做,因为我对 vue 非常缺乏经验。
谢谢您的帮助。