详解Vue.directive 自定义指令


Posted in Javascript onMarch 27, 2019

一、什么是全局API?

全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive。说的简单些就是,在构造器外部用Vue提供给我们的API函数来定义新的功能。

二、Vue.directive自定义指令

我们在第一季就学习了内部指令,我们也可以定义一些属于自己的指令,比如我们要定义一个v-jspang的指令,作用就是让文字变成绿色。

在自定义指令前我们写一个小功能,在页面上有一个数字为10,数字的下面有一个按钮,我们每点击一次按钮后,数字加1.

三、自定义指令中传递的三个参数

el: 指令所绑定的元素,可以用来直接操作DOM。

binding:  一个对象,包含指令的很多信息。

vnode: Vue编译生成的虚拟节点。

四、自定义指令的生命周期

自定义指令有五个生命周期(也叫钩子函数),分别是 bind,inserted,update,componentUpdated,unbind

  1. bind:只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个绑定时执行一次的初始化动作。
  2. inserted:被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于document中)。
  3. update:被绑定于元素所在的模板更新时调用,而无论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新。
  4. componentUpdated:被绑定元素所在模板完成一次更新周期时调用。
  5. unbind:只调用一次,指令与元素解绑时调用。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script type="text/javascript" src="../assets/js/vue.js"></script>
  <title>vue.directive 自定义指令</title>
</head>
<body>
  <h1>vue.directive 自定义指令</h1>
  <hr>
  <div id="app">
    <div v-jspang="color" id="aaa">
      {{num}}
    </div>
    <p>
      <button @click='jia'>加分</button>
    </p>
    <p>
      <button onclick='unbind()'>解绑</button>
    </p>
  </div>
 
  <script type="text/javascript">
 
    function unbind(){
      app.$destroy();
    }
 
    //自定义指令
    Vue.directive('jspang',{
      bind:function(el,binding,vnode){//被绑定
        /**
            var s=JSON.stringify;
            el.innerHTML = 
              'name:'    + s(binding.name) +'<br>' + 
              'value:'    + s(binding.value) +'<br>' + 
              'expression:' + s(binding.expression) +'<br>' ;
        **/
        el.style='color:'+binding.value;
         
 
        console.log('1 - bind');
      },
      inserted:function(){//绑定到节点
        console.log('2 - inserted');
      },
      update:function(){//组件更新
        console.log('3 - update');
      },
      componentUpdated:function(){//组件更新完成
        console.log('4 - componentUpdated');
      },
      unbind:function(){//解绑
        console.log('5 - unbind');
      }
 
    })
 
    var app=new Vue({
      el:'#app',
      data:{
        color:'green',
        num:10
      },
      methods:{
        jia:function(){
          this.num++;
        }
      }
    })
  </script>
</body>
</html>
bind:function(){//被绑定
   console.log('1 - bind');
},
inserted:function(){//绑定到节点
   console.log('2 - inserted');
},
update:function(){//组件更新
   console.log('3 - update');
},
componentUpdated:function(){//组件更新完成
   console.log('4 - componentUpdated');
},
unbind:function(){//解绑
   console.log('1 - bind');
}

以上所述是小编给大家介绍的Vue.directive 自定义指令详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
破除网页鼠标右键被禁用的绝招大全
Dec 27 Javascript
又一个图片自动缩小的JS代码
Mar 10 Javascript
javascript实现轮显新闻标题链接
Aug 13 Javascript
JS获取IP、MAC和主机名的五种方法
Nov 14 Javascript
jQuery处理xml格式的返回数据(实例解析)
Nov 28 Javascript
js创建表单元素并使用submit进行提交
Aug 14 Javascript
JavaScript 消息框效果【实现代码】
Apr 27 Javascript
jquery分隔Url的param方法(推荐)
May 25 Javascript
javascript实现简易计算器的代码
May 31 Javascript
深入理解requestAnimationFrame的动画循环
Sep 20 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
Aug 24 Javascript
在vscode 中设置 vue模板内容的方法
Sep 02 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
Mar 27 #Javascript
js取0-9随机取4个数不重复的数字代码实例
Mar 27 #Javascript
vue 详情跳转至列表页实现列表页缓存
Mar 27 #Javascript
vue中多个倒计时实现代码实例
Mar 27 #Javascript
JavaScript偏函数与柯里化实例详解
Mar 27 #Javascript
vue实现鼠标移入移出事件代码实例
Mar 27 #Javascript
JavaScript惰性载入函数实例分析
Mar 27 #Javascript
You might like
paypal即时到账php实现代码
2010/11/28 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
Symfony2实现从数据库获取数据的方法小结
2016/03/18 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
vue $set 给数据赋值的实例
2019/11/09 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
Django中的cookie和session
2019/08/27 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
大数据分析用java还是Python
2020/07/06 Python
python设置表格边框的具体方法
2020/07/17 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
python 录制系统声音的示例
2020/12/21 Python
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
大学自荐信
2013/12/12 职场文书
课内比教学心得体会
2014/09/09 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL