自定义指令的说明和注册

2023-11-14

自定义指令说明

Vue3

除了核心功能默认内置的指令 (v-modelv-show),Vue 也允许注册自定义指令。 v-xxx

注意,代码复用和抽象的主要形式是组件。

然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。

自定义指令的注册分为:局部注册全局注册

自定义指令 - 局部注册

例如需求: 当页面加载时,让元素将获得焦点 , (autofocus 在 safari 浏览器有兼容性)

语法:directives:{指令名称,配置对象}

<template>
  <div>
    <h3>自定义指令</h3>
    <input ref="inp" type="text" v-focus>
  </div>
</template>

<script>
export default {
  directives: {
    // 自定义一个局部指令
    focus: {
      inserted (el) {
        el.focus()
      }
    }
  }
}
</script>

给你解释一下哈~

在export default里面有个配置项是directives,这是个配置对象,是个对象,意味着可以写多个指令(key,value)。focus是(key)指令名称,(value是个对象),{ }配置对象里有个必不可少的方法是inserted,inserted里有个形参el,el可以帮助我们拿到这个v-focus指令使用的对象,打印el,输出的是 <input type="text">然后调用方法el.focus()

自定义指令 - 全局注册

就是在所有的vue'文件中都可以使用

语法:Vue.directive(指令名称,配置对象)

// 注册全局自定义指令
Vue.directive('focus', {
  inserted (el) {
    el.focus()
  }
})

再解释一下:

在main.js中,Vue有个directive方法,第一个参数('focus')是注册的指令的名称,后面{ }是配置对象,后面配置对象里的和局部注册一样

自定义指令 - 指令的值

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

需求: v-color="color" 给对应的颜色, 就能改对应的字体颜色

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

data(){
return  {
colorStr:'red'
}
}

实现

directives: {
  // 自定义一个局部指令
  color: {
    // 指令所在的元素渲染的时候
    inserted (el, {value}) {
      el.style.color = value
    },
    // update指令的值改变时触发, binding.value指令的值修改触发
    update (el, binding) {
      el.style.color = binding.value
    }
  }
}

第二个形参binding,绑定的是指令传递过来的一些数据

 

错误演示:当我们修改了colorStr数据的时候,文字颜色并不发生改变

 

因为:指令后面跟的是对象,directives这个方法在指令初次使用的时候被调用一次,后面数据发生变化,也不会触发directives这个方法。

还有一个update()这个方法,这个方法的形参和directives一样,不一样的是,updata方法的是当数据发生改变的时候触发。所以 el.style.color = binding.value写在update里面哦~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义指令的说明和注册 的相关文章

随机推荐

  • 论文阅读_变分自编码器_VAE

    英文名称 Auto Encoding Variational Bayes 中文名称 自编码变分贝叶斯 论文地址 http arxiv org abs 1312 6114 时间 2013 作者 Diederik P Kingma 阿姆斯特丹大
  • 硬盘故障时如何强制关机:Input/output error

    如果硬盘可能会出现锁死或坏道的故障 会造成SHELL命令的失效 包括 reboot powoff shutdown 用正常的命令是没法完成重启的 执行这些命令 会出现如下IO报错 reboot bash sbin reboot Input
  • 【微信小程序-0基础入门】项目发布完整流程

    写在前面 上一节讲述了小程序的相关介绍以及账号注册 这一节讲述小程序发布的具体流程 目录 安装开发者工具 小程序项目发布流程 小程序代码的构成 项目结构 1 了解项目的基本组成结构 2 小程序页面的组成部分 小程序代码的构成 JSON 配置
  • Unity游戏开发之游戏动画(模型动画制作及导入)

    一 简单制作3D角色 在stream中下载Fuse软件 在Fuse中制作人物 导出模型为OBJ格式 注意 这里导出目录必须为英文路径 否则只能导出空的OBJ文件 压缩Obj文件为zip格式 打开Mixamo网站 https www mixa
  • 以“信”数智,筑“广”生态:亚信科技CEO高念书受邀出席中国广电数字化赋能大会

    6月30日 由国家广播电视总局指导 中国广电集团主办的中国广电数字化赋能大会在京召开 国家广播电视总局党组成员 副局长杨小伟 工信部总工程师赵志国 中国移动党组成员 副总经理高同庆等出席会议并致辞 中广电移动网络有限公司董事长宋起柱作主题报
  • Golang 程序测试框架

    注意事项 测试用例文件名必须以 test go结尾 如 person test go 测试用例函数必须以Test开头 比如person test go文件中的TestReStore 测试函数的形参必须是t testing T 一个测试用例文
  • stm32(SCCB)+ov7670摄像头输出图像程序

    一 简介 OV7670一般模块指低成本数字输出CMOS摄像头 其摄像头包含30w像素的CMOS图像感光芯片 3 6mm焦距的镜头和镜头座 板载CMOS芯片所需要的各种不同电源 电源要求详见芯片的数据文件 板子同时引出控制管脚和数据管脚 方便
  • 版本号比较 [java]

    原文地址 java版本号比较 思路 将版本号按点分割 并转成数字类型 放入list 取两个版本位数的最大数 如 1 0 1为3位 1 0 0 1为4位 将位数不够的版本进行补全 不够部分补成0 从第一位开始比较 出现大于情况返回1 出现小于
  • 为什么米聊干不过微信

    1 核心功能不稳定 2 广播太多用户体验差 3 取名太局限 4 发展新朋友能力有限 5 运营能力差
  • C++set容器set和multiset区别

    C set容器set和multiset区别 学习目标 掌握set和multiset的区别 区别 set不可以插入重复数据 而multiset可以 set插入数据的同时会返回插入结果 表示插入是否成功 multiset不会检测数据 因此可以插
  • QT 自定义信号和槽

    好久没有静下心来思考了 每天靠工作驱动 忙碌但不踏实 QT信号与槽机制一直在用 也会用 但只是知其然不知其所以然 今天临近下班给自己点清醒的时间 详细了解了下 总结如下 信号与槽机制是QT中不同对象相互通信的一种方法 有两种写法 第一种是S
  • Cassandra创建键空间(Keyspace)

    Cassandra查询语言 CQL 可帮助开发人员与Cassandra沟通交互 Cassandra查询语言的语法与SQL非常相似 什么是键空间 Keyspace 键空间 Keyspace 是用于保存列族 用户定义类型的对象 键空间 Keys
  • ios 超签签名服务器搭建(超签)

    为什么要搭建签名服务器吗 因为应用不能上架App Store 使用企业签名频繁掉签造成客户流失 用户体验不好 ios安装的app有几种方式吗 1 App Store 安装 符合法律法规的能走app Store的app 2 企业签名安装 灰色
  • Paxos算法细节详解(一)--通过现实世界描述算法

    Paxos算法细节详解 一 通过现实世界描述算法 Paxos分析 最近研究paxos算法 看了许多相关的文章 概念还是很模糊 觉得还是没有掌握paxos算法的精髓 所以花了3天时间分析了libpaxos3的所有代码 此代码可以从https
  • SpringBoot_5

    SpringBoot对静态资源的映射规则 如果我们需用给web项目中添加css js html文件的话 我们会发现此时没有webapp目录 由于springboot是以jar包的方式打包程序的因此是没有webapp目录的 那么我们的css
  • VMware虚拟机从一台电脑复制到另一台电脑

    在一台电脑上利用虚拟机创建了centos 如果想在家里的电脑虚拟机上也运行centos 不用再重新安装以及漫长的安装等待了 可以利用先前在虚拟机上安装centos生成的 vmx文件和 vmdk文件 拷贝到U盘 再重新导入到新电脑就可以了 省
  • DBMS_STATS分析表 (zt) dbms_stats.set_table_stats 手工设置统计信息

    作用 DBMS STATS GATHER TABLE STATS统计表 列 索引的统计信息 DBMS STATS GATHER TABLE STATS的语法如下 DBMS STATS GATHER TABLE STATS ownname V
  • 关于React + Antd 按需引入样式未生效问题

    第一步 npm install antd 安装antd 第二步 在根目录下创建 babelrc文件 配置按需引入需要用到的plugin npm install save dev import babel import presets bab
  • 跨服务器共享文件,不同服务器之间实现文件共享

    不同服务器之间实现文件共享 内容精选 换一换 表1列出了弹性文件服务的常用功能 在使用弹性文件服务之前 建议您先通过常用概念介绍了解NFS CIFS等基本概念 以便更好地理解弹性文件服务提供的功能 表示该类型的文件系统支持该功能 表示该类型
  • 自定义指令的说明和注册

    自定义指令说明 Vue3 除了核心功能默认内置的指令 v model 和 v show Vue 也允许注册自定义指令 v xxx 注意 代码复用和抽象的主要形式是组件 然而 有的情况下 你仍然需要对普通 DOM 元素进行底层操作 这时候就会