Таким образом, в основном я смог наблюдать window.scrollY
, добавив обычный eventListner resize в созданный хук и удалив его в уничтоженный хук.При изменении размера я проверял window.scrollY
и, если он был выше или ниже 500, я изменял логическую переменную, с которой я связываю разные классы:
<nav class="navbar u-no-padding"
v-if="displayedNav"
:class="minimizedNav ? 'navbar__not-collapsed' : 'navbar__collapsed'">
Также, если в URL-адресе у меня есть :id
(чточасть маршрутизатора vue) тогда я полностью скрываю навигацию, поэтому я также использую директиву v-if
.
Она работала нормально, но потом я понимаю, что могу использовать vue watch
для просмотра window.srollY
по порядкучтобы изменить некоторую логическую переменную в data (), когда window.srollY
выше или ниже 500
Я также могу посмотреть this.$route.params.id
, и если она установлена, изменить this.displayed
на false.
Итак, в конце у меня будет два наблюдателя, которые будут менять логические значения, и на этих логических значениях я делаю что-то с nav, как показано в html.Я попытался создать это и получить
export default {
data() {
return {
minimizedNav: true,
displayedNav: true,
buildingId: this.$route.params.id
}
},
watch: {
'buildingId' : (data) => {
console.log(data);
if(data) this.displayedNav = false;
},
'window.scrollY' : (data) => {
console.log(data);
if(data > 500) this.minimizedNav = false;
if(data <= 500) this.minimizedNav = true;
}
}
}
Но это не сработало, я подозревал, что оно будет console.log(data)
, где данные равны this.$route.params.id
или buildingId
при каждом их изменении.Но это ничего не утешает.Почему, что я здесь делаю не так?