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

VUE---自定义指令

自定义指令:自己定义的指令,可以封装一些dom操作,扩展额外功能。可分为全局注册与                        局部注册。

全局注册(main.js中注册):

Vue.directive('指令名称',{

        bind(ele,binding) {},  // 只执行一次;DOM渲染之前执行,里面可以进行样式操作

        inserted(ele,binding) {},  // 只执行一次;DOM渲染之后执行,里面可以进行行为操作                                                 --常用

        update(ele,binding) {}, // 数据更新后执行--常用

        componentUpdated(ele,binding) {}, // 父子组件都更新后执行

        unbind(ele,binding) {}, // 指令解绑的时候执行

})

 局部注册(main.js中注册):

export default {

        Vue.directive('指令名称',{

                bind(ele,binding) {},  // 只执行一次;DOM渲染之前执行,里面可以进行样式操作

                inserted(ele,binding) {},  // 只执行一次;DOM渲染之后执行,里面可以进行行                                                               为操作--常用

                update(ele,binding) {}, // 数据更新后执行--常用

                componentUpdated(ele,binding) {}, // 父子组件都更新后执行

                unbind(ele,binding) {}, // 指令解绑的时候执行

        })

}

指令值的语法:
        ① v-指令名 = "指令值" ,通过 等号 可以绑定指令的值
        ② 通过 binding.value 可以拿到指令的值
        ③ 通过 update 钩子 ,可以监听指令值的变化,进行dom更新操作

 

示例1---打开页面时,输入框自动获取焦点(全局注册,main.js)

// vue页面
<input type="text" v-focus />// main.js
Vue.directive('focus', {// 获取焦点inserted(ele, binding) {console.log(ele) // 绑定指令的元素console.log(binding) // 指令的相关信息(指令的值等)ele.focus() // 让元素获取焦点},
})

结果如下: 

控制台打印的消息如下:

示例2--改变页面字体颜色(局部注册,在页面中注册): 

// vue页面
<h3 v-color="color">需求2:Ajax请求数据,并设计loading指令</h3><script>
export default {data() {return {color: 'red',}},directives: {color: {inserted(el, binding) {el.style.color = binding.value},update(el, binding) {el.style.color = binding.value},},},
}
</script>

结果如下:

修改color变量的值后,页面字体颜色自动更新如下

http://www.lryc.cn/news/284562.html

相关文章:

  • 开发安全之:Cross-Site Scripting (XSS) 漏洞
  • 代码随想录算法训练营第二十四天| 77. 组合
  • 虚拟歌姬学习:DiffSinger,让GitHub下载快的方法!
  • What is `StringEscapeUtils.escapeHtml4` does?
  • Dubbo 的心脏:理解和应用多种协议【十三】
  • 操作系统实验报告
  • IPv6--ACL6(IPv6访问控制列表--基本ACL6配置)
  • C和指针课后答案
  • C语言——大头记单词
  • 根据自己修改后的容器制作镜像并上传docker hub
  • Maven 基础安装配置及使用
  • redis 持久化机制
  • MySQL(视图,存储函数,存储过程)
  • rockchip 平台 linux FIT 打包格式介绍
  • 虚拟机安装宝塔的坑
  • Ubuntu使用QtCreator + CMake 开发C/C++程序
  • 【分布式监控】zabbix与grafana连接
  • 02-编程猜谜游戏
  • Web3解密:区块链技术如何颠覆传统互联网
  • java小项目:简单的收入明细记事本,超级简单(不涉及数据库,通过字符串来记录)
  • 域环境权限提升
  • 【Debian】非图形界面Debian10.0.0安装xfce和lxde桌面
  • 极狐GitLab 线下『 DevOps专家训练营』成都站开班在即
  • 片外存储器_FLASH的页、扇区、块介绍
  • Python——字符串的基本操作
  • 【cuda】四、基础概念:Cache Tiled 缓存分块技术
  • [C#]winform部署openvino官方提供的人脸检测模型
  • Java中对日期的处理
  • 【Linux install】Ubuntu和win双系统安装及可能遇到的所有问题
  • Helm Dashboard — Kubernetes 中管理 Helm 版本的 GUI