35 lines
1.0 KiB
JavaScript
35 lines
1.0 KiB
JavaScript
|
import {
|
||
|
getScrollContainer
|
||
|
} from "element-plus/lib/utils";
|
||
|
|
||
|
/**
|
||
|
* 自定义懒加载指令
|
||
|
*/
|
||
|
export default {
|
||
|
name:'InfiniteScroll',
|
||
|
inserted(el,binding,vnode){
|
||
|
//绑定回调函数
|
||
|
const cb = binding.value;
|
||
|
//当前组件实例引用
|
||
|
const vm = vnode.context;
|
||
|
const container = getScrollContainer(el,true);
|
||
|
const {delay,immediate} =getScrollOptions(el,vm);
|
||
|
const onScroll = throttle(delay,handleScroll.bind(el,cb));
|
||
|
el[scope] = {el,vm,container ,onScroll};
|
||
|
if(container){
|
||
|
container.addEventListener('scroll',onScroll);
|
||
|
if(immediate){
|
||
|
const observer = el[scope].observer = new MutationObserver(onScroll);
|
||
|
observer.observe(container,{childList:true,subtree:true});
|
||
|
onScroll()
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
unbind(el){
|
||
|
const {container,onScroll} = el[scope];
|
||
|
if(container){
|
||
|
container.removeEventListener('scrrll',onScroll)
|
||
|
}
|
||
|
}
|
||
|
}
|