Vue.directive自定义指令

本文详细介绍了Vue.js中的自定义指令,包括全局和局部指令的创建、生命周期和应用场景。通过示例展示了如何在`bind`和`inserted`生命周期中执行不同业务逻辑,并强调了自定义指令时的注意事项,如不需要在定义时加`v-`前缀。此外,还探讨了钩子函数参数的使用,例如在`color`指令中根据传入值改变元素颜色。
摘要由CSDN通过智能技术生成

1.自定义指定

1.1 自定义全局指令

自定义全局指令的特点:在任何一个 vue 实例控制的区域中都可以使用

1.1.1 自定义全局指令的语法

  • 格式
vue.directive("自定义指令名称", {
  生命周期名称: function (el) {
    指令业务逻辑代码;
  },
});
  • 具体运用

directive 方法接收两个参数
第一个参数:指令的名称
第二个参数:对象
注意点: 在自定义指令的时候, 在指定指令名称的时候, 不需要写 v-
注意点: 指令可以在不同的生命周期阶段执行
bind:指令被绑定到元素上的时候执行
inserted:绑定指令的元素被添加到父元素上的时候执行

<div id="app">
  <p v-color>我是段落</p>
  <input type="text" v-focus />
</div>
<script>
  Vue.directive("color", {
    // 这里的el就是被绑定指令的那个元素
    bind: function (el) {
      el.style.color = "red";
    },
  });
  Vue.directive("focus", {
    inserted: function (el) {
      el.focus();
    },
  });
  // 这里就是MVVM中的View Model
  let vue = new Vue({
    el: "#app",
    // 这里就是MVVM中的Model
    data: {},
    // 专门用于存储监听事件回调函数
    methods: {},
  });
</script>

1.1.2 指令生命周期

自定义指令时一定要明确指令的业务逻辑代码更适合在哪个阶段执行

1.1.2.1 bind

指令业务逻辑代码中没有用到元素事件,那么可以在 bind 阶段执行

1.1.2.2 inserted

指令业务逻辑代码中用到了元素事件,那么就需要再 inserted 阶段执行

1.1.3 自定义指令注意点

使用时需要加上v-,而在定义的时候不需要

1.1.4 钩子函数参数

<div id="app">
  <p v-color="'blue'">我是段落</p>
  <p v-color="curColor">我是段落</p>
</div>
<script>
  Vue.directive("color", {
    // 这里的el就是被绑定指令的那个元素
    bind: function (el, obj) {
      // el.style.color = "red";
      el.style.color = obj.value;
    },
  });
  let vue = new Vue({
    el: "#app",
    data: {
      curColor: "green",
    },
    methods: {},
  });
</script>

1.2 自定义局部指令

只能再自定义的那个 Vue 实例中使用

1.2.1 自定义局部指令的语法

  • 格式
directives: {
    // key: 指令名称
    // value: 对象
    'color': {
        bind: function (el, obj) {
            el.style.color = obj.value;
        }
    }
}
  • 运用
<div id="app1">
  <p v-color="'blue'">我是段落</p>
</div>
<div id="app2">
  <p v-color="'red'">我是段落</p>
</div>
<script>
  // 这里就是MVVM中的View Model
  let vue1 = new Vue({
    el: "#app1",
    // 这里就是MVVM中的Model
    data: {},
    // 专门用于存储监听事件回调函数
    methods: {},
  });
  // 这里就是MVVM中的View Model
  let vue2 = new Vue({
    el: "#app2",
    // 这里就是MVVM中的Model
    data: {},
    // 专门用于存储监听事件回调函数
    methods: {},
    // 专门用于定义局部指令的
    directives: {
      color: {
        // 这里的el就是被绑定指令的那个元素
        bind: function (el, obj) {
          el.style.color = obj.value;
        },
      },
    },
  });
</script>

vue-directive官网详解

学习随记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值