摘要:然后,其定義方式有兩種,一種是其中為,為的虛擬,為一較復(fù)雜對象,詳情可見鉤子函數(shù)中的參數(shù)的參數(shù),還有一種,為參數(shù)代表的含義,參見鉤子函數(shù)描述最后,要使用自定義的指令,只需在對用的元素中,加上的前綴形成類似于內(nèi)部指令,的形式。
首先,Vue.directive要在實(shí)例初始化之前,不然會(huì)報(bào)錯(cuò),還有,定義的指令不支持駝峰式寫法,也會(huì)報(bào)下面同樣的錯(cuò),雖然在源碼中沒有找到在哪里統(tǒng)一處理大小寫,但是在有關(guān)directive的方法中捕捉到的指令命名統(tǒng)一變?yōu)樾?所以,還是用"-"或者"_"分割吧。
vue.js:491 [Vue warn]: Failed to resolve directive: xxx
然后,其定義方式有兩種,一種是Vue.directive("xxx", function(el, bind, vNode){}),其中el為dom,vNode為vue的虛擬dom,bind為一較復(fù)雜對象,詳情可見Vue-directive鉤子函數(shù)中的參數(shù)的參數(shù),還有一種,為
Vue.directive("my-directive", { bind: function () {}, inserted: function () {}, update: function () {}, componentUpdated: function () {}, unbind: function () {} })
參數(shù)代表的含義,參見鉤子函數(shù)描述
最后,要使用自定義的指令,只需在對用的元素中,加上"v-"的前綴形成類似于內(nèi)部指令"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++; } } });
當(dāng)然,也可以將method中的方法加入,bind.value即為methods中的方法。
{{num}}