import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event' const doResize = async (el, binding, vnode) => { const { componentInstance: $table } = await vnode const { value } = binding if (!$table.height) { throw new Error("el-$table must set the height. Such as height='100px'") } const bottomOffset = (value && value.bottomOffset) || 30 if (!$table) return let height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset if (value && value.fixedHeight) { height = value.fixedHeight } $table.layout.setHeight(height) $table.doLayout() } export default { bind(el, binding, vnode) { el.resizeListener = async () => { await doResize(el, binding, vnode) } addResizeListener(el, el.resizeListener) addResizeListener(window.document.body, el.resizeListener) }, async inserted(el, binding, vnode) { await doResize(el, binding, vnode) }, unbind(el) { removeResizeListener(el, el.resizeListener) } }