详解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实现点小图看大图效果的思路及示例代码
Oct 28 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
Feb 23 Javascript
浅析JavaScript访问对象属性和方法及区别
Nov 16 Javascript
jQuery插件dataTables添加序号列的方法
Jul 06 Javascript
微信小程序进行微信支付的步骤昂述
Dec 01 Javascript
利用Bootstrap实现表格复选框checkbox全选
Dec 21 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 Javascript
vue实现简单loading进度条
Jun 06 Javascript
jquery获取img的src值实例介绍
Jan 16 jQuery
VUE v-model表单数据双向绑定完整示例
Jan 21 Javascript
详解Vue 换肤方案验证
Aug 28 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设计模式 Prototype (原型模式)代码
2011/06/26 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
python web框架学习笔记
2016/05/03 Python
Python正则表达式常用函数总结
2017/06/24 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
python实现简易数码时钟
2021/02/19 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
python异常触发及自定义异常类解析
2019/08/06 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
python中with用法讲解
2020/02/07 Python
python实现三种随机请求头方式
2021/01/05 Python
python 批量将中文名转换为拼音
2021/02/07 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
教师个人的自我评价分享
2014/01/02 职场文书
企业宣传策划方案
2014/05/29 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
商业用房租赁协议书
2014/10/13 职场文书
2014年民警工作总结
2014/11/25 职场文书
公诉意见书范文
2015/06/05 职场文书
python如何正确使用yield
2021/05/21 Python
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript