如果感觉 vue 提供的功能不足够,需要获取 dom 元素进行底层操作,就可以自定义指令
在初始化 vue 实例的时候,参数对象里面可以添加一个 directives 属性,为 vue 增加自定义指令。
写好一个指令的方法之后,就可以像 v-html 等的内置指令一样使用了。
例子:实现一个指令 v-focus 作用就是插入了这个指令的 input 会被自动聚焦
实现方式
directives: {
focus: {
// 指令的定义,这个 inserted 是固定写法,意思是带有这个指令的 dom 元素被插入的时候,触发这个方法
// 还有其他一些可选写法,感兴趣可以看文档
inserted: function (el) {
el.children[0].focus()
}
}
}
2、使用指令
<input v-focus type="text">
注意:按照官网的Vue自定义指令directives
设置Element-UI的el-input输入框获取焦点无法生效,通过查看浏览器解析出的Element-UI的DOM树发现,Element-UI的input外层包裹了一层<div><div/>
标签,浏览器解析如下
如果写el.focus()
相当于把自定义指令给了el-input
这个div
而不是input
输入框,所以加了一个children[0]
获取input
节点
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。