import {addResizeListener, removeResizeListener} from 'element-ui/src/utils/resize-event' // 设置表格高度 const doResize = async (el, binding, vnode) => { // 获取表格Dom对象 const {componentInstance: $table} = await vnode // 获取调用传递过来的数据 const {value} = binding if (!$table.height) { $table.height = '100px' } // 获取距底部距离(用于展示页码等信息) const bottomOffset = (value && value.bottomOffset) || 30 if (!$table) return // 计算列表高度并设置 console.log("mark3") const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset - 10 $table.layout.setHeight(height) $table.doLayout() } export default { // 初始化设置 bind(el, binding, vnode) { // 设置resize监听方法 el.resizeListener = async () => { await doResize(el, binding, vnode) } // 绑定监听方法到addResizeListener addResizeListener(window.document.body, el.resizeListener) }, // 绑定默认高度 async inserted(el, binding, vnode) { await doResize(el, binding, vnode) }, // 绑定默认高度 async update(el, binding, vnode) { await doResize(el, binding, vnode) }, // 销毁时设置 unbind(el) { // 移除resize监听 removeResizeListener(el, el.resizeListener) } } /*function setHeight(el, binding) { let rect = el.getBoundingClientRect(); if (rect.top > 0) { let height = window.innerHeight - rect.top - (binding.value0); // console.log(binding.value +-' + window.innerHeight) // console.log(rect) el.style.height = height + 'px el.style.overflowY = 'auto' } Vue.directive('fixed-bottom', { bind: function (el, binding) { // console.log('bind') setHeight(el, binding) }, inserted: function (el, binding) { // console.log('inserted') setHeight(el, binding) }, update: function (el, binding) { // console.log(update') setHeight(el, binding) } })*/