摘要:然后,其定義方式有兩種,一種是其中為,為的虛擬,為一較復雜對象,詳情可見鉤子函數中的參數的參數,還有一種,為參數代表的含義,參見鉤子函數描述最后,要使用自定義的指令,只需在對用的元素中,加上的前綴形成類似于內部指令,的形式。
首先,Vue.directive要在實例初始化之前,不然會報錯,還有,定義的指令不支持駝峰式寫法,也會報下面同樣的錯,雖然在源碼中沒有找到在哪里統一處理大小寫,但是在有關directive的方法中捕捉到的指令命名統一變為小寫,所以,還是用"-"或者"_"分割吧。
vue.js:491 [Vue warn]: Failed to resolve directive: xxx
然后,其定義方式有兩種,一種是Vue.directive("xxx", function(el, bind, vNode){}),其中el為dom,vNode為vue的虛擬dom,bind為一較復雜對象,詳情可見Vue-directive鉤子函數中的參數的參數,還有一種,為
Vue.directive("my-directive", { bind: function () {}, inserted: function () {}, update: function () {}, componentUpdated: function () {}, unbind: function () {} })
參數代表的含義,參見鉤子函數描述
最后,要使用自定義的指令,只需在對用的元素中,加上"v-"的前綴形成類似于內部指令"v-if","v-text"的形式。
// Vue.directive Vue.directive("test_directive", function(el, bind, vNode){ el.style.color = bind.value; }); var app = new Vue({ el: "#app", data: { num: 10, color: "red" }, methods: { add: function(){ this.num++; } } });
當然,也可以將method中的方法加入,bind.value即為methods中的方法。
{{num}}