当前位置: 首页 > news >正文

前端-Vue自定义指令

目录

一.什么是自定义指令

二.使用方法

        1.全局定义

        2.局部定义

三.自定义指令-指令的值


        每个指令有着自己各自独立的功能

一.什么是自定义指令

       Vue 的自定义指令是一种可以直接操作 DOM 元素 的机制,适用于那些 v-modelv-showv-if 这些现成指令不好满足的场景。

        例子:

                比如你想让一个元素自动获得焦点,你可以这样写一个自定义指令:

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

                然后在模板中使用它:

<input v-focus />

二.使用方法

        1.全局定义

// 全局注册
Vue.directive('指令名称', {//当前指令所绑定的元素在添加到页面后会自动调用inserted(el) {//el就是指令所绑定的元素console.log(el)}
})
// 文件核心作用:导入App.vue.基于App.vue创建结构渲染index.html
// 1.导入Vue核心包
import Vue from 'vue'
// 2.导入App.vue跟组件
import App from './App.vue'// 3.是否提示当前处于什么环境(生成环境/开发环境)
Vue.config.productionTip = false// 全局注册
Vue.directive('focus', {inserted(el) {console.log(el)}
})// 4.Vue实例化,提供render方法 基于App.vue创建结构渲染index.html
new Vue({// 作用同.$mount('#app')一样,用于指定Vue所管理容器el: '#app',//基于App创建元素结构render: h => h(App),//还有一种写法是// render:(createElement) =>{//     return createElement(App)// }
}).$mount('#app')
<script lang="ts">
import {defineComponent} from 'vue'export default defineComponent({name: "GrandfatherComponent",
})
</script><template><div><h1>自定义指令</h1><input v-focus type="text"></div>
</template><style scoped lang="less"></style>

        2.局部定义

<script lang="ts">
import {defineComponent} from 'vue'export default defineComponent({name: "GrandfatherComponent",// 局部注册directives: {'focus': {inserted(el) {el.focus()}}},
})
</script><template><div><h1>自定义指令</h1><input v-focus type="text"></div>
</template><style scoped lang="less"></style>

三.自定义指令-指令的值

        需求:实现一个color指令-传入不同的颜色,给标签设置文字颜色

        语法:

                在绑定指令时,可以通过“等号”的形式为指令绑定具体的参数值

<div v-color="color">我是内容<div>

                通过binding.value可以拿到指令值,指令值修改会触发update函数

directives: {'color': {inserted(el, binding) {el.style.color = binding.value},update(el, binding) {el.style.color = binding.value}}},
<script lang="ts">
import {defineComponent} from 'vue'export default defineComponent({name: "GrandfatherComponent",// 局部注册directives: {'color': {inserted(el, binding) {el.style.color = binding.value},update(el, binding) {el.style.color = binding.value}}},data() {return {colorOne: '#ff0000',colorTwo: '#5805ff',}}
})
</script><template><div><h1>自定义指令的值</h1><div v-color="colorOne">指令的值</div><div v-color="colorTwo">指令的值</div></div>
</template><style scoped lang="less"></style>

http://www.dtcms.com/a/389718.html

相关文章:

  • 深度学习调参核心:PyTorch学习率调整策略全解析(一)(附系列PPT关键要点)
  • 如何在保证质量的前提下,快速完成一份 PPT?
  • AssemblyScript 入门教程(3)AssemblyScript 项目搭建与实战入门
  • React 实战进阶视频教程
  • 运维安全08 - 日志检测和 tcpdump (抓包) 的介绍以及使用
  • 感烟火灾探测器工程量计算
  • 数学真题分类刷题(前两章)
  • 基于文本与声学特征的渐冻症言语障碍严重程度分类研究
  • 基于语音合成的数据增强在独立说话人构音障碍严重程度分类中的应用
  • vscode 设置
  • vscode关闭coplit功能
  • ICML 2025|GAPrompt:用于3D视觉模型的几何感知点云提示
  • OCCI使用
  • 如何在命令列将.brd转成.siw
  • 贪心算法应用:欧拉路径(Fleury算法)详解
  • 第13章 时间处理
  • Python 抓包工具有哪些,抓包失败怎么办?(Python 抓包工具清单 + 常见失败原因与逐步排查)
  • 数据库模式演进的利器:Alembic 深度解析
  • 用 JMeter 打通“异步入队 + 网关限流”的高并发压测实践
  • Linux服务器从零开始-服务器安装配置
  • Python第三节基本数据类型详解与使用指南
  • 【indextts2】之四:ubuntu24.04 经常跑满12G 显存、音色与录制关系很大
  • 【学习笔记】稳定币的技术原理与信任逻辑
  • 为 Elasticsearch Ruby Client 引入 ES|QL 查询生成器
  • 平安养老险陕西分公司积极开展“保障金融权益,助力美好生活”金融教育宣传周活动
  • 多线程的特点与同步、互斥锁
  • 将npm run dev 冷启动从 90s 优化到 8.5s的实践
  • 【附源码】基于SSM的小型银行贷款系统设计与实现
  • X-Forwarded-For
  • 中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破