Vue自定义指令

在 Vue 的模板语法中有各种各样的指令: v-show、 v-for、 v-model 等等,除了使用这些指令之外, Vue 也允许自定义自己的指令
- 在 Vue 中,代码的复用和抽象主要还是通过组件
- 通常在某些情况下,需要对 DOM 元素进行底层操作,这个时候就会用到自定义指令
自定义指令分为两种
- 自定义局部指令: 组件中通过 directives 选项,只能在当前组件中使用
- 自定义全局指令: app 的 directive 方法,可以在任意组件中被使用
案例演示
实现案例: 当某个元素挂载完成后可以自定获取焦点
- 实现方式一:使用默认的实现方式
- 实现方式二:自定义一个 v-focus 的局部指令
- 实现方式三:自定义一个 v-focus 的全局指令
方式一: 默认实现

方式二: 局部自定义指令
自定义一个 v-focus 的局部指令, 只需要在组件选项中使用 directives 即可
- 它是一个对象,在对象中编写自定义指令的名称(注意:这里不需要加 v-)
- 自定义指令有一个生命周期, 是在组件挂载后调用的 mounted, 可在其中完成操作
<script> |
方式三: 自定义全局指令
自定义一个全局的 v-focus 指令可以在任何地方直接使用
app.directive("focus", { |
生命周期
一个指令定义的对象, Vue 提供了如下的几个钩子函数:
- created:在绑定元素的 attribute 或事件监听器被应用之前调用
- beforeMount:当指令第一次绑定到元素并且在挂载父组件之前调用
- mounted:在绑定元素的父组件被挂载后调用
- beforeUpdate:在更新包含组件的 VNode 之前调用
- updated:在包含组件的 VNode 及其子组件的 VNode 更新后调用
- beforeUnmount:在卸载绑定元素的父组件之前调用
- unmounted:当指令与元素解除绑定且父组件已卸载时,只调用一次
评论
匿名评论
✅ 你无需删除空行,直接评论以获取最佳展示效果