0

<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>

ルート ビューには 2 つのコンポーネント A と B が表示されますが、コンポーネント A の scrollTop は 0 で、コンポーネント B にルーティングし、下にスクロールしてからコンポーネント A にルーティングすると、A もスクロールします。誰にもアイデアはありますか?

4

3 に答える 3

1

グローバル before フックをルーターに追加できます。これは、すべてのルート遷移が開始され、ページの上部にスクロールされる前に呼び出されます。それが私がそれを解決した方法です。ここを読む

ビュー 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 }
   }
 })

ここを参照

于 2016-08-25T07:54:02.820 に答える
0

私はあなたが間違った要素をスクロールしていると思います.私はそのような同じ間違いを犯しました.コンポーネントAとコンポーネントBは両方とも要素ボディにあり、ボディをスクロールするので、スクロールバーを移動する限り、それは機能しますA&Bの両方。最終的には、本文をスクロールする代わりにコンポーネントをスクロールすることで解決しました。

于 2017-01-06T08:13:54.640 に答える
0

Vuejs2.0では、ページ変更時のスクロール動作を処理する新しい受け入れられた方法があります。

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

これにより、ナビゲーションが変更されるたびにページの上部にスクロールされます。この機能に関する完全な公式ドキュメントは、こちらで読むことができます。

于 2016-11-18T12:28:54.077 に答える