封装自定义指令模块

166 阅读1分钟

自定义指令本身

路径: src/directives/index.js

// 项目所有自定义指令
export const imageerror = {
    // inserted 当前dom插入到节点就执行
    inserted(dom, options) {
        // dom就是当前dom元素-图片
        dom.onerror = function() {
        // 图片获取出错事件,出错就把传入的数据赋值dom(图片)元素的src
            dom.src = options.value
        }
        
    },
}

man.js 循环引入所有自定义指令

import * as directives from '@/directives' // 引入自定义指令

// Object.keys 转化为数组,并用forEach循环数组
Object.keys(directives).forEach(key => {
  // 注册全局指令,key就是指令名称(循环的对象属性) directives[key]是值
  Vue.directive(key, directives[key])
})

组件中使用自定义指令 v-imageerror

       <img
            v-imageerror="defaultAvatar" //自定义指令传入一个默认图片
            :src="staffPhoto"
            class="user-avatar"
          />
          
   data() {
    return {
      defaultAvatar: require('@/assets/common/head.jpg'), // 图片路径
    };
  },