Vue.js中Directive知识

近期所学的Vue.js这个MVVM前端技术缓解了我一直愁于前后端开发杂糅所带来的痛苦。今天就来说说关于Vue.js里面的Directive知识。

 

Directive

Directive看上去虽然和Angular中的定义类似,Directive都是对DOM功能的一种拓展,但是Vue的Directive要弱的多。

因为,Vue Component本来就包括对DOM的操作,所以大多数时候我们写一个通用组件都是一个Component而不是一

个Directive,但是在Angular中每写一个通用组件,一般都是一个Directive。所以,相对来说,Vue的Directive要纯粹

的多(它就是对DOM功能的一个拓展,而不是为了封装和DOM相关的逻辑)。

 

生命周期

生命周期分为三个阶段:

• bind    :第一次绑定到DOM元素上的时候触发

• update bind:完成之后立即触发,以后每当参数更新的时候都会触发

• unbind    :解除和DOM元素的绑定时触发

 

其中,update是最重要的。update函数接收的参数就是用户通过Attr传入的值。

我们来举一个简单的Directive案例:

它的作用是对Todo List输入的内容进行校验(表单校验)。Directive基本结构为:

 

1 Vue.directive("minlength", {
2     bind: function() {
3     },
4     update: function() {
5     },
6     unbind: function() {
7    }
8 });

 

接下来,我们需要在用户输入数据的时候进行校验,代码如下:

 1 Vue.directive("minlength", {
 2   bind: function() {
 3     var self = this;
 4     var el = this.el;
 5 
 6     el.addEventListener("keydown", function(e) {
 7       if(e.keyCode === 13) {
 8         if(el.value.length < self.minlength) {
 9           e.preventDefault();
10         }
11       }
12     });
13 
14     var submit = el.parentNode.querySelector("button, [type='submit']");
15     submit.disabled = true;
16     el.addEventListener("keyup", function(e) {
17       submit.disabled = (el.value.length < self.minlength);
18     });
19   },
20   update: function(value) {
21     this.minlength = parseInt(value);
22   },
23   unbind: function() {
24   
25   }
26 });

 

从上述代码来看,Directive应该就是为了实现类似的功能存在的,当然还有很多其它的用法就不再细说了。

其次,Directive在Vue中并不是很重要的一块,所以,建议大家平时写代码的时候更多还是写Component。

 

转载于:https://www.cnblogs.com/lunatic-cto/p/6139934.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值