diff --git a/src/directive/el-table/adaptive.js b/src/directive/el-table/adaptive.js index 2d97e7f3..3fa29c91 100644 --- a/src/directive/el-table/adaptive.js +++ b/src/directive/el-table/adaptive.js @@ -7,27 +7,35 @@ import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/re * el-table height is must be set * bottomOffset: 30(default) // The height of the table from the bottom of the page. */ + +const doResize = (el, binding, vnode) => { + const { componentInstance: $table } = 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 + + const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset + $table.layout.setHeight(height) + $table.doLayout() +} + export default { bind(el, binding, vnode) { - const { componentInstance: $table } = 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 - el.resizeListener = () => { - if (!$table) return - - const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset - $table.layout.setHeight(height) - $table.doLayout() + doResize(el, binding, vnode) } addResizeListener(el, el.resizeListener) }, + inserted(el, binding, vnode) { + doResize(el, binding, vnode) + }, unbind(el) { removeResizeListener(el, el.resizeListener) }