自定义指令
基本用法
跟组件类似分全局注册和局部注册,区别就是把component换成derective
Vue.derective('nanme',{
    钩子函数:function(el,binding){
    }
})
钩子函数
指令定义提供了几个钩子函数(可选)
bind:只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作.
inserted:被绑定元素插入父接点时调用(父节点存在即可调用,不必存在于document中).
update:被绑定元素所在的模板更新时调用,而不论绑定值是否变化.通过比较更新后的绑定值,可以忽略不必要的模板更新.
componentUpdated:被绑定元素所在模板完成一次更新周期时调用.
unbind:只调用一次,指令与元素解绑时调用.
钩子函数的参数
el:指令所绑定的元素,可以直接用来操作DOM.
binding:一个对象.包含以下属性:
- name:指令名,不包括v-前缀.
 - value:指令的绑定值,例如v-mydirective=”1 + 1”,value=”2”.
 - oldValue:指令绑定的前一个值,仅在update和componentUpdated钩子中可用.无论值是否改变都可用.
 - expression:绑定值的字符串形式.如上例:expression=”1+1”.
 - arg:传给指令的参数. 如:v-my-directive:foo,arg=”foo”.
 - modifiers:一个包含修饰符的对象.例如v-my-directive.a.b modifiers的值是{a:true,b:true}
 - vnode:Vue编译生成的虚拟节点.
 - oldVnode:上一个虚拟节点,仅在update和componentUpdated钩子中可用.
 
例:
    <div id="app">
        <p v-test:goudan.a.b.c="obq"></p>
    </div>
    <script>
        Vue.directive('test',{
            bind:function(el,binding){
                el.innerHTML = 'v-test:goudan.a.b.c="obq"' + '<br/>' + 
                                'name' + ':' + binding.name + '<br>' +  //test
                                'value' + ':' + binding.value + '<br>' + //我是value
                                'argument' + ':' + binding.arg + '<br>' + //goudan
                                'modifiers' + ':' + JSON.stringify(binding.modifiers)  + '<br>' //{a:true,b:true,c:true}
            }
        })
        var app = new Vue({
            el:'#app',
            data:{
                obq:'我是value'
            }
        })
    </script>
版权声明:本博客所有文章除特殊声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处 Roxas Deng的博客!