Маршрут vuejs между компонентами прокручивается одинаково

<template>
    <div class="index">
        <common-header id="common-header" class="common-header" v-el:commonheader></common-header>
        <router-view transition keep-alive class="index-view"></router-view>
    </div>
</template>

в представлении маршрута будут показаны два компонента A и B, а для компонента A scrollTop установлено значение 0, я направляюсь к компоненту B и прокручиваю вниз, а затем направляюсь к компоненту A, A также прокручивается. У кого-нибудь есть идеи?


person Zou cj    schedule 17.08.2016    source источник
comment
Я попытался установить параметры маршрутизатора saveScrollPosition, но результат тот же.   -  person Zou cj    schedule 17.08.2016


Ответы (3)


Вы можете добавить глобальный хук перед маршрутизатором, который будет вызываться перед началом каждого перехода маршрута и прокрутки до верхней части страницы. Вот как я это решил. Прочитайте здесь

Вью 1.

router.beforeEach(function (transition) {
 window.scrollTo(0, 0)
 transition.next()
})

Для Vue2:

 const router = new VueRouter({
   scrollBehavior (to, from, savedPosition) {
     return { x: 0, y: 0 }
   }
 })

См. здесь

person Deepak    schedule 25.08.2016
comment
ссылка сейчас не найдена - person mythicalcoder; 30.11.2017

Для Vuejs2.0 существует новый общепринятый способ обработки поведения прокрутки при изменении страницы:

 import VueRouter from 'vue-router';
 const router = new VueRouter({
     scrollBehavior (to, from, savedPosition) {
         return { x: 0, y: 0 }
     }
 })

Это будет прокручиваться вверх страницы после каждого изменения навигации. Вы можете ознакомиться с полной официальной документацией об этой функции здесь .

person Nik Subramanian    schedule 18.11.2016

Я думаю, что вы прокручиваете не тот элемент. Я совершаю ту же ошибку: компонент A и компонент B находятся в теле элемента, и я делаю прокрутку тела, поэтому, пока вы перемещаете полосу прокрутки, она будет работать для оба A&B.I, наконец, решают это, прокручивая компонент вместо прокрутки тела.

person Friedemann Lee    schedule 06.01.2017