Vue2 局部自定义指令 / 全局自定义指令

面试官:说一下局部自定义指令 / 全局自定义指令往细了说

答:回答问题以第一人称,不要给人一种背书的感觉,利用自己的知识储量、理解来说

       我会以有几种定义方式,在什么地方定义,里面有几种钩子,钩子中有哪些参数、使用场景来阐述,分为全局自定义指令和局部自定义指令,

全局自定义指令:

全局自定义指令最简单的写法实在main.js直接书写全局自定义指令是通过Vue.directive('第一个参数是指令的名称,第二个是对象,对象里面有钩子函数,钩子函数分别有

inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

bind:只调用一次,指令第一次绑定到元素时调用。使用场景:在这里可以进行一次性的初始化设置。

update:所在组件的 VNode 更新时调用,等...

钩子函数的形参有el,vnode,binding,el是绑定的元素、vnode虚拟dom,binding是被赋值的结果,要用binding.value来接收调用指令时赋的值,对象里操作逻辑

定义:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAMC7mtLvlnKjpo47mtarph4w=,size_20,color_FFFFFF,t_70,g_se,x_16

在页面使用: 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAMC7mtLvlnKjpo47mtarph4w=,size_20,color_FFFFFF,t_70,g_se,x_16

 

局部自定义指令:
局部自定义指令是定义在组件内部的,只能在当前组件中使用,directives后是一个对象,对象里面key是指令名字,值是一个对象,这个对象里面有钩子函数update,bind,inserted,参数是el,binding,vnode,钩子函数里面书写逻辑

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAMC7mtLvlnKjpo47mtarph4w=,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

全局自定义指令

1 在mian.js写

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAMC7mtLvlnKjpo47mtarph4w=,size_20,color_FFFFFF,t_70,g_se,x_16

 2 在需要的组件使用

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAMC7mtLvlnKjpo47mtarph4w=,size_20,color_FFFFFF,t_70,g_se,x_16

局部自定义指令

directives全局没有s 局部加s 写法也不同

script>
export default {
  data() {
    return {
      color: "red",//为 变量背景色局部自定义指令 写值
    };
  },
  methods: {},

  components: {},
  created() {},
  //局部 的自定义指令directives与data同级
  //  <input type="text"  v-focus />
  //  <div v-bgcolor="color"> 变量背景色局部自定义指令 </div>//在data中定义 color:'red',
  // <div v-bgcolor="'#000'" v-color="'#fff'"> 直接写值 字符串要加引号 </div>
  directives: {
    focus: {
      inserted(el, binding, vnode) {
        // 生命周期解释:绑定到节点
        el.focus();
      },

     
    },
    bgcolor: {
      inserted(el, binding, vnode) {
        // 生命周期解释:绑定到节点
        el.style.backgroundColor = binding.value; //驼峰
      },
    },
    color: {
      inserted(el, binding, vnode) {
        // 生命周期解释:绑定到节点
        el.style.color = binding.value;
      },
    },
  },
};
</script>

使用:

      <input type="text" v-focus />
      <div v-bgcolor="color"> 变量背景色局部自定义指令 </div>
      <div v-bgcolor="'#000'" v-color="'#fff'"> 直接写值 字符串要加引号 </div>

完!

A lot can happen between now and never.
把握当下,一切皆有可能。

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彩色之外

你的打赏是我创作的氮气加速动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值