Я использую Laravel - VueJS framework.
Я хочу определить Y-позицию прокрутки мыши и передать ее динамически в качестве реквизита компонентной навигационной панели.Для этого я создал eventListener и сохранил значение window.scrollY в переменной scrollPos внутри data ().После этого я передаю scrollPos как опору компоненту Navbar, используя v-bind: scrollPos = "scrollPos".К сожалению, значение, которое передается в компоненте Navbar, равно 0 и не изменяется при дальнейшей прокрутке мыши.
<Navbar v-on:scroll="this.changeScrollPos" v-bind:scrollPos="scrollPos" />
mounted() {
console.log('Component mounted.');
window.addEventListener('scroll', function(e) {
this.scrollPos = window.scrollY;
console.log(this.scrollPos);
});
},
data() {
return {
scrollPos: 0
}
},
methods: {
changeScrollPos() {
console.log('Mouse scrolled');
}
}
Я передаю значение в компонент Navbar, где я просто хочу отобразить это значение в панели навигации, которая зафиксирована в верхней части страницы и имеет ссылки на маршрутизаторы, которые прокручивают до этого.раздел страницы при нажатии.
<nav class="nav" id="nav">
<div class="nav-content>
<ul class="nav-items">
<li class="nav-item"><router-link to="/" v-scroll-to="'#section1'">{{ scrollPos }}</router-link></li>
</ul>
</div>
</nav>
<script>
export default {
props: [
"scrollPos"
]
}
</script>
Я также пытался использовать метод v-on:scroll="this.changeScrollPos()"
, чтобы проверить, доступен ли этот метод после любых изменений в прокрутке мыши, но это не так.
Может кто-нибудь объяснить, почему это не работает, и помочь мне в передаче значений динамической прокрутки мыши компоненту Navbar.
Редактировать: Это похоже на Наблюдать за изменениями window.scrollY вVuejs , но не проблема в этой проблеме уже решена, и я могу извлечь значение прокрутки мыши и отобразить его, моя проблема в том, что я хочу передать это значение компоненту, и когда это значение изменяется, значение передается вкомпонент также должен измениться (динамическое значение передается в режиме реального времени на основе прокрутки мыши).