使用vue-router進行頁面切換時滾動條位置與滾動監聽事件


按照正常的產品邏輯,我們在進行頁面切換時滾動條應該是在頁面頂部的,可是。。。在使用vue-router進行頁面切換時,發現滾動條所處的位置被自動記錄了下來,且在另一個組件內定義的滾動監聽事件仍會運行,着實吃了一大驚。。。

說說我的破解方法:1、在每個需要用vue-router切換的組件的mounted鈎子內將頁面的位置自動回滾到頁面頂部,解決滾動條位置自動記錄問題;

         2、在每個組件內定義一條變量scrollWatch默認為true,在綁定滾動監聽事件時加個if判斷,只有在scrollWatch為true時進行監聽函數,然后在組件destroyed的鈎子內將變量scrollWatch設為false;這樣就解決了滾動監聽在別的組件內仍會運行的問題。

 

<script>
import $ from 'jquery';
export default {
  data () {
    return {
      scrollWatch: true
    }
  },
  mounted() {
    $(window).scrollTop(0);
    $(window).on('scroll', () => {
      if (this.scrollWatch) {
           //your code here
        }
      }
    });
  },
  destroyed () {
    this.scrollWatch = false;
  }
}
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM