Цель моего кода - запустить fetchNumbers()
(который выбирает числа из API), когда пользователь прокручивает нижнюю часть страницы, что-то вроде бесконечной прокрутки.У меня возникла проблема с условием внутри обещания axios (тогда), потому что он запускает два console.log
выхода одновременно.Кажется, что условие вообще игнорируется.
Метод, который я использую:
methods: {
fetchNumbers (type = 'default', offset = 0, limit = 0) {
return axios.get(globalConfig.NUMBERS_URL)
.then((resp) => {
if (type === 'infinite') {
console.log('infinite fired')
} else {
console.log('default fired')
}
})
}
Монтируемая функция (где я подозреваю проблему):
mounted () {
window.onscroll = () => {
let bottomOfWindow = document.documentElement.scrollTop + window.innerHeight > document.documentElement.offsetHeight - 1
if (bottomOfWindow) {
this.fetchNumbers('infinite')
}
}
}
Когда яперезагрузите страницу или войдите в нее, я получаю 2 консольных выхода одновременно:
default fired
infinite fired
Иногда порядок меняется.
ОБНОВЛЕНИЕ.
Методы, которые вызывают fetchNumbers()
async created () {
await this.fetchNumbers()
}
showCats (bool) {
this.showCategories = bool
if (!bool) {
this.category = [1]
} else {
this.category = []
}
this.isActive = true
this.fetchNumbers()
}
ОБНОВЛЕНИЕ 2.
Нашли виновника - постятэто в ответе.
ОБНОВЛЕНИЕ 3.
Проблема действительно с функцией onscroll
.У меня есть 3 страницы в моем приложении: главная страница, страница с номерами, страница контактов.Если я перехожу на страницу с номерами (где установлена функция прокрутки), затем на главную страницу или на страницу контактов, тогда эта функция onscroll
все еще включена, и когда я достигаю дна - она запускает мой вызов API, даже если это нестраница номеров.Можно ли ограничить эту функцию только страницей с числами?