当前位置:首页 > VUE

vue 指令实现

2026-02-09 23:27:53VUE

Vue 指令实现

Vue 指令是带有 v- 前缀的特殊特性,用于在 DOM 元素上应用响应式行为。Vue 提供了一些内置指令(如 v-modelv-if),同时也支持自定义指令的注册。

内置指令示例

v-bind 动态绑定属性:

<div v-bind:class="{ active: isActive }"></div>

v-model 实现双向数据绑定:

<input v-model="message" placeholder="edit me">

v-for 渲染列表:

<li v-for="item in items" :key="item.id">{{ item.text }}</li>

自定义指令实现

注册全局自定义指令:

Vue.directive('focus', {
  inserted: function (el) {
    el.focus();
  }
});

注册局部指令(组件内):

vue 指令实现

directives: {
  focus: {
    inserted: function (el) {
      el.focus();
    }
  }
}

使用自定义指令:

<input v-focus>

指令钩子函数

自定义指令提供以下钩子(均为可选):

  • bind:指令第一次绑定到元素时调用
  • inserted:被绑定元素插入父节点时调用
  • update:所在组件 VNode 更新时调用
  • componentUpdated:所在组件及子组件 VNode 全部更新后调用
  • unbind:指令与元素解绑时调用

动态指令参数

指令参数可以是动态的:

<a v-bind:[attributeName]="url"> ... </a>

attributeName 值为 href 时,等价于:

vue 指令实现

<a v-bind:href="url"> ... </a>

指令修饰符

修饰符是以点开头的特殊后缀:

<form v-on:submit.prevent="onSubmit">...</form>

.prevent 修饰符会调用 event.preventDefault()

函数简写

当需要在 bindupdate 时触发相同行为时:

Vue.directive('color', function (el, binding) {
  el.style.color = binding.value;
});

对象字面量

指令可以接收任何合法的 JavaScript 表达式:

<div v-demo="{ color: 'white', text: 'hello' }"></div>
Vue.directive('demo', function (el, binding) {
  console.log(binding.value.color); // => "white"
  console.log(binding.value.text);  // => "hello"
});

标签: 指令vue
分享给朋友:

相关文章

vue vnode实现

vue vnode实现

Vue VNode 实现原理 VNode(Virtual Node)是 Vue 的核心概念之一,用于描述真实 DOM 的轻量级虚拟表示。VNode 的实现涉及以下关键点: VNode 的基本结构 V…

vue 分页 实现

vue 分页 实现

Vue 分页实现方法 使用第三方库(如 Element UI) Element UI 提供了现成的分页组件 el-pagination,适合快速集成。 安装 Element UI: npm ins…

vue 实现协同

vue 实现协同

Vue 实现协同编辑的方案 协同编辑指多个用户同时编辑同一文档并实时同步更改。Vue 结合相关库和技术可轻松实现该功能。 使用 WebSocket 实现实时通信 WebSocket 提供全双工通信,…

vue实现幻灯

vue实现幻灯

Vue实现幻灯片的基础方法 使用Vue实现幻灯片功能可以通过多种方式完成,以下是几种常见方案: 方案一:基于Vue的过渡动画 通过Vue的<transition>或<transit…

vue实现tip

vue实现tip

Vue实现Tooltip的方法 使用Vue实现Tooltip可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML的title属性 在Vue模板中直接使用HTML的title属性是最简单的实…

vue sku 实现

vue sku 实现

Vue SKU 实现方案 在电商系统中,SKU(Stock Keeping Unit)是商品的最小库存单位,通常由多个属性组合而成(如颜色、尺寸等)。以下是基于 Vue 的实现方案。 数据结构设计…