//#region ====================== v-resize ====================== const resizeMap = new WeakMap(); const ob = new ResizeObserver((entries) => { for (const entry of entries) { // 获取dom元素的回调 const handler = resizeMap.get(entry.target); //存在回调函数 if (handler) { // 将监听的值给回调函数 handler({ width: entry.borderBoxSize[0].inlineSize, height: entry.borderBoxSize[0].blockSize, }); } } }); const resizeDirective = (el, callback) => { resizeMap.set(el, callback); ob.observe(el); } const clearResizeDirective = (el) => { ob.unobserve(el); } var elementResizeDirective = (app) => { app.directive('resize', { mounted(el, binding) { //将dom与回调的关系塞入map resizeMap.set(el, binding.value); //监听el元素的变化 ob.observe(el); }, unmounted(el) { //取消监听 ob.unobserve(el); }, }); }; //#endregion