Vue.js中Directive知識

近期所學的Vue.js這個MVVM前端技術緩解了我一直愁於先後端開發雜糅所帶來的痛苦。今天就來講說關於Vue.js裏面的Directive知識。前端

 

Directive後端

Directive看上去雖然和Angular中的定義相似,Directive都是對DOM功能的一種拓展,可是Vue的Directive要弱的多。函數

由於,Vue Component原本就包括對DOM的操做,因此大多數時候咱們寫一個通用組件都是一個Component而不是一this

個Directive,可是在Angular中每寫一個通用組件,通常都是一個Directive。因此,相對來講,Vue的Directive要純粹spa

的多(它就是對DOM功能的一個拓展,而不是爲了封裝和DOM相關的邏輯)。code

 

生命週期blog

生命週期分爲三個階段:生命週期

• 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。

相關文章
相關標籤/搜索