自定义指令(写一个倒置时)

自定义指令好处很多,有时候很多简单的功能形不成方法,但是调用的地方有很多,这时候使用自定义指令其实是一个不错的选择,下面就是一个简单的自定义指令实现一个倒置时:
看图

<!DOCTYPE html>
<html lang="en">

<head>
  <title></title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script src="https://unpkg.com/vue"></script>
</head>

<body>
  <div id="app">
    <button v-countdown='5'>click</button>
    <br/>
  </div>
</body>
<script>
  function countdownTime(binding) {
    let time = binding.value || 10;
    let timer = setInterval(function () {
      if (time > 1) {
        --time;
        binding.elm.innerHTML = "倒置时还有:" + time + "(秒)";
      } else {
        binding.elm.innerHTML = "click";
        clearInterval(timer);
      }
    }, 1000);
  }
  Vue.directive('countdown', {
    bind(el, vnode, binding) {
      el.addEventListener("click", function () {
        countdownTime(binding);
      });
    },
    unbind(el, binding) {
      el.removeEventListener("click", countdownTime(binding));
    }
  });
  var vm = new Vue({
    el: "#app",
  });

</script>

</html>

api说明:

  • bind 只调用一次,指令第一次绑定到元素时调用,在这里可以进行一次性初始化设置
  • inserted 被绑定元素插入福接单是调用(仅保证父节点存在,但不一定已被插入文档中)
  • update 所在组件的VNode更新时调用,但是可能发生在其子VNode更新之前,指令的值可能发生了改变,也可能没有,但是可以通用比较更新前后的值来忽略不必要的模板更新
  • componentUpdated 指令所在组件的VNode及其子VNode全部跟新后调用
  • unbind 值调用一次,指令与元素解绑时调用

github地址:https://github.com/wqb2017/my…

    原文作者:sanyang
    原文地址: https://segmentfault.com/a/1190000012414741
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞