详解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 相关文章推荐
不要小看注释掉的JS 引起的安全问题
Dec 27 Javascript
自动完成JS类(纯JS, Ajax模式)
Mar 12 Javascript
Jquery知识点三 jquery表单对象操作
Jan 17 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
Nov 28 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
May 24 Javascript
详解Vue 动态添加模板的几种方法
Apr 25 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
Jun 01 Javascript
深入探究node之Transform
Jul 20 Javascript
JS模拟实现哈希表及应用详解
May 04 Javascript
解决vue-cli 打包后自定义动画未执行的问题
Nov 12 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
Aug 08 Javascript
Nest.js参数校验和自定义返回数据格式详解
Mar 29 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
PHP编码转换
2012/11/05 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
深入理解javascript中的this
2021/02/08 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
pygame实现非图片按钮效果
2019/10/29 Python
python基于socket实现的UDP及TCP通讯功能示例
2019/11/01 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
教堂婚礼主持词
2014/03/14 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
Pillow图像处理库安装及使用
2022/04/12 Python