上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='请输入内容' } })