资讯专栏INFORMATION COLUMN

Vue.directive使用注意

susheng / 3045人阅读

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

首先,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}}
阅读需要支付1元查看
<