1. 程式人生 > >使用vue.js在頁面內元件監聽scroll事件

使用vue.js在頁面內元件監聽scroll事件

思路:scroll在哪兒個元件內,就在獲取那個dom元素。網上好多思路是

window.addEventListener("scroll", function(){
        console.log('scrolling');
      });

這是監聽不到的!如果你整個網頁可以滑動,或許還可以試試!

對於像我這樣,只在頁面的內的一個div內要監聽的。實現程式碼如下:

第一步:滑動的元件外層的div加 ref="viewBox" 為了通過$refs獲取dom元素
<!--裝置列表-->
<div class="deviceWrapper" ref="viewBox">
  <mu-refresh-control :refreshing="refreshing" :trigger="trigger" @refresh="refresh"/>
  <div class="demo-grid">
    <!--裝置列表 手機一行兩列 pad一行4列-->
    <mu-row>
      <mu-col v-for="device in devicesList" width="50" tablet="25" desktop="25">
        <deviceCardView :device-data="device""></devicelightCardView>
      </mu-col>
    </mu-row>
  </div>
  <p class="bottomLine" v-bind:class="{bottomLineVisible:isScroll}">---------------------我是有底線的---------------------</p>
</div>
第二步:
mounted() {
// 通過$refs獲取dom元素
  this.box = this.$refs.viewBox
  // 監聽這個dom的scroll事件
  this.box.addEventListener('scroll', () => {
    console.log(" scroll " + this.$refs.viewBox.scrollTop)
    //以下是我自己的需求,向下滾動的時候顯示“我是有底線的(類似支付寶)”
    this.isScroll=this.$refs.viewBox.scrollTop>0
  }, false)
}
ps:具體怎麼做,看需求了。只要能打印出來.scrollTop就行了