详解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 相关文章推荐
判断多个input type=file是否有已经选择好文件的代码
May 23 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
Jan 04 Javascript
js 浏览本地文件夹系统示例代码
Oct 24 Javascript
jQuery的animate函数实现图文切换动画效果
May 03 Javascript
jquery mobile界面数据刷新的实现方法
May 28 Javascript
es6学习笔记之Async函数的使用示例
May 11 Javascript
jQuery正则验证注册页面经典实例
Jun 10 jQuery
史上最全JavaScript数组去重的十种方法(推荐)
Aug 17 Javascript
bootstrap select下拉搜索插件使用方法详解
Nov 23 Javascript
从setTimeout看js函数执行过程
Dec 19 Javascript
详解node.js的http模块实例演示
Jul 12 Javascript
vue 实现强制类型转换 数字类型转为字符串
Nov 07 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 变量未定义等错误的解决方法
2011/01/12 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
深入理解JavaScript定时机制
2010/10/29 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
vuejs实现标签选项卡动态更改css样式的方法
2018/05/31 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
Python 流程控制实例代码
2009/09/25 Python
使用python装饰器验证配置文件示例
2014/02/24 Python
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
python语言是免费还是收费的?
2020/06/15 Python
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
2014自荐信的写作技巧
2014/01/28 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
共青团员自我评价范文
2014/09/14 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
证婚人致辞精选
2015/07/28 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python