Vue.js从入门到项目实践(超值版)
上QQ阅读APP看书,第一时间看更新

3.2.1 指令的注册

自定义指令在Vue中占据重要的位置。下面将介绍指令的注册,包括如何对全局指令及局部指令进行注册。

1.局部注册

局部注册自定义指令:作用在局部,默认只会在当前页面的Vue实例生效;其写法跟全局注册不同,它是用directives写在Vue实例中,这时directive要加“s”变为复数。指令名不用字符串格式,指令名和directives都是以对象的形式来写,其中的钩子函数写法和全局一样。当指令写好后,直接在html元素中使用v-指令名即可。

局部注册自定义指令,代码如下:

    directives:{
       content:{
        inserted:el=>{
        el.value='请输入内容';
        }
       }
    }

在页面中用v-指令名引用即可,代码如下:

    <input type="text" v-focus v-content/>
2.全局注册

全局注册自定义指令:作用在全局,写法是在Vue实例前用Vue.directive()方法,directive不用加“s”。在这个方法中传入两个参数,第一个参数是指令名,指令名要求是字符串;第二个参数是一个对象,在对象中属性为钩子函数,这很像Ajax中的success回调函数,在钩子函数中传入参数(如el、binding、VNode、oldVnode),根据参数进行编写。

全局注册自定义指令,代码如下:

提示:全局注册用directive,末尾是没有“s”的,局部注册是有“s”的。

    Vue.directive('focus',{
       inserted:function(el){
       el.focus()//添加焦点事件,也可以给DOM元素添加其他,例如在<input>标签中用到el.value='请输入内容'
       }
    })