摘要:然后,其定义方式有两种,一种是其中为,为的虚拟,为一较复杂对象,详情可见钩子函数中的参数的参数,还有一种,为参数代表的含义,参见钩子函数描述最后,要使用自定义的指令,只需在对用的元素中,加上的前缀形成类似于内部指令,的形式。
首先,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}}