import Vue from 'vue';
/**
* 插入loading
*/
const insertDom = (el) => {
let dom = `
`;
//el添加相对定位
el.classList.add('el-loading-parent--relative');
// 插入到被绑定的元素内部
el.insertAdjacentHTML('afterbegin', dom);
};
/**
* 移除loading
*/
const removeDom = (el) => {
const ds = el.getElementsByClassName('el-loading-mask')[0];
if (ds) {
el.removeChild(ds);
el.classList.remove('el-loading-parent--relative');
}
};
// 更新是否显示
const toggleLoading = (el, binding) => {
if (binding.value) {
insertDom(el);
} else {
removeDom(el);
}
};
Vue.directive('loading', {
bind: function (el, binding, vnode) {
toggleLoading(el, binding);
},
//所在组件的 VNode 更新时调用--比较更新前后的值
update: function (el, binding) {
if (binding.oldValue !== binding.value) {
toggleLoading(el, binding);
}
}
});