视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
详解Vue.directive 自定义指令
2020-11-27 21:59:33 责编:小采
文档


一、什么是全局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 自定义指令详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

下载本文
显示全文
专题