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)
|
}
|
})*/
|