突然有個人問起vue如何做滾動監聽?
既然你誠心誠意的發問了, 我就大發慈悲的告訴你.(武藏 & 小次郎)
指令可以很好的做這件事情, 下面以element-select舉例:
directives.js
// v-loadmore: 用于在element-ui的select下拉框加上滾動到底事件監聽Vue.directive('loadmore', { bind(el, binding) { // 獲取element-ui定義好的scroll盒子 const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap'); SELECTWRAP_DOM.addEventListener('scroll', function() { /* * scrollHeight 獲取元素內容高度(只讀) * scrollTop 獲取或者設置元素的偏移值,常用于, 計算滾動條的位置, 當一個元素的容器沒有產生垂直方向的滾動條, 那它的scrollTop的值默認為0. * clientHeight 讀取元素的可見高度(只讀) * 如果元素滾動到底, 下面等式返回true, 沒有則返回false: * ele.scrollHeight - ele.scrollTop === ele.clientHeight; */ const CONDITION = this.scrollHeight - this.scrollTop <= this.clientHeight; if(CONDITION) { binding.value(); } }); }})組件中:
<template> <el-select v-model="selectValue" v-loadmore="loadMore"> <el-option v-for="item in options" :key="item.id" :label="item.accountName" :value="item.id"> </el-option> </el-select></template>// methodsloadMore() { // 這里可以做你想做的任何事 到底執行},以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持錯新站長站。
|
新聞熱點
疑難解答
圖片精選