上一篇我们说了elementui如何将loading组件添加到 Vue 实例上,具体内容见上期 elementui 中 loading 组件源码解析。
这一篇我们开始讲讲自定义指令
自定义指令
关于自定义指令,详细的前置信息还是官方文档最全,传送门
接下来就是 elementui 中的源码了,为了更方便阅读,我也是做了一定的简化
import loadingVue from './loading.vue';
const Mask = Vue.extend(loadingVue);
Vue.directive('loading', {
// 只调用一次 指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置
bind: function (el, binding, vnode) {
const textExr = el.getAttribute('element-loading-text');
const spinnerExr = el.getAttribute('element-loading-spinner');
const backgroundExr = el.getAttribute('element-loading-background');
const customClassExr = el.getAttribute('element-loading-custom-class');
const vm = vnode.context;
const mask = new Mask({
el: document.createElement