使用vue.js在頁面內元件監聽scroll事件
阿新 • • 發佈:2019-01-08
思路: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就行了