祖安之光
10 天以前 397f5b5d8f6f15270b158a91ba3b173d00051df5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import {Directive, DirectiveBinding, nextTick} from 'vue'
const loadMore: Directive = {
    beforeMount(el: any, binding: DirectiveBinding) {
        console.log('111',el)
        const selectDom = (document.querySelector(".more_select_dropdown") as any).querySelector(".el-select-dropdown .el-select-dropdown__wrap");
        console.log(selectDom, 'selectDom++++++++++++++');
        function loadMores(this: any) {
            const isBase = this.scrollHeight - this.scrollTop <= this.clientHeight
            if (isBase) {
                binding.value && binding.value()
            }
        }
        el.selectDomInfo = selectDom
        el.userLoadMore = loadMores
        nextTick(() => {
            selectDom?.addEventListener('scroll', loadMores)
        })
    },
    beforeUnmount(el: any) {
        if (el.userLoadMore) {
            el.selectDomInfo.removeEventListener('scroll', el.userLoadMore)
            delete el.selectDomInfo
            delete el.userLoadMore
        }
    }
}
export default loadMore