一次生气的vue自定义指令经历

71 阅读1分钟

怒了,写了一个自定义点击事件指令,结果导致每次刷新页面,都会执行这个指令,找了半天也找不到原因,最后!!!我把点击事件传参去掉了,就...好了?

原文
  <div
    v-click-kta="gotoItemLink(item)"
    v-else
    :data-item="item">
    <img
        :src="item.imgUrl"
        alt="" >
</div>
去掉参数后
   v-click-kta="gotoItemLink"

但是现在怎么传参啊啊啊啊啊啊啊,问了AI几百遍都巴拉巴拉说些指令的生命周期这些没用的
最后我准备在div标签绑定data-属性,来在指令中获取参数,然后...我调着调着,就在网上找到了传参文档,arg !!!,对!就是它binding.arg,可以了,气顺了,解散!

// 注册自定义指令
Vue.directive('click-kta', {
    // 当被绑定的元素挂载到DOM上时...
    inserted(el, binding) {
        const item = binding.arg;
        // 添加点击事件监听器
        el.addEventListener('click', () => {
            // 执行绑定到指令的值对应的函数
            binding.value(item);
        });
    },
    // 当被绑定的元素从DOM上移除时...
    unbind(el) {
        // 移除点击事件监听器
        el.removeEventListener('click');
    }
});