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

Vue-自定义指令

自定义指令

简单写法

v-twoAge

功能: 当前年龄翻倍
注意:指令方法名称 小写

  • 代码
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>自定义指令</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script><script type="text/javascript" src="../js/dayjs.min.js"></script><style>.base {padding: 5px;height: 100px;}</style></head><body><div id="root"><h1>自定义指令</h1><div><h2>年龄:<span v-text="age"></span></h2><button @click="addAge">age+1</button><h2>年龄x2:<span v-twoAge="age"></span></h2></div></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在启动是生成生产提示const vm = new Vue({el: "#root",data: {name: "Vue 扛把子",age:18},methods: {addAge(){this.age++;}},directives:{/**指令函数调用时机1. 指令与元素成功绑定时(初始化)2. 指令所在的模板被重新解析时*/twoage(element,bindObj){console.log(element)console.log(bindObj)/**1. element: 是HtmlElement,dom对象2. bindObj:绑定对象 v-twoAge 指令的值、名称等*/element.innerText = bindObj.value * 2}}});</script>
</html>
  • 效果

在这里插入图片描述

标准写法

v-focus-input

功能: input 框内 展示当前年龄且聚焦
注意:指令方法名称 小写 或者 加引号
格式:‘filterName’:{bind(e,b){},inserted(e,b)(),update(e,b){}}

  • bind:指令与元素成功绑定时调用
  • inserted:指令所在元素被插入页面时调用
  • update:指令所在的模板被重新解析时调用
  • 代码
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>自定义指令</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script><script type="text/javascript" src="../js/dayjs.min.js"></script><style>.base {padding: 5px;height: 100px;}</style></head><body><div id="root"><h1>自定义指令</h1><h2>年龄:<span v-text="age"></span></h2><button @click="addAge">age+1</button><h2>年龄x2:<span v-two-age="age"></span></h2><br><input type="text" v-focos-input:value="age"></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在启动是生成生产提示const vm = new Vue({el: "#root",data: {name: "Vue 扛把子",age:18},methods: {addAge(){this.age++;}},directives:{/**指令函数调用时机1. 指令与元素成功绑定时(初始化)2. 指令所在的模板被重新解析时*/'two-age'(element,bindObj){console.log(element)console.log(bindObj)/**1. element: 是HtmlElement,dom对象2. bindObj:绑定对象 v-twoAge 指令的表达式、名称、值等*/element.innerText = bindObj.value * 2},'focos-input':{// 指令与元素成功绑定时bind(element,bindObj){console.log("bind")element.value = bindObj.value},// 指令所在元素被插入页面时inserted(element,bindObj){console.log("inserted")// 操作dom插入后的一些操作element.focus(); // input聚焦},// 指令所在的模板被重新解析时update(element,bindObj) {console.log('update')element.value = bindObj.valueelement.focus(); // input聚焦}},}});</script>
</html>
  • 效果

在这里插入图片描述

全局指令

格式:

  • Vue.directive(‘filterName’,function(e,b){})
  • Vue.directive(‘filterName’,{bind(e,b){},inserted(e,b)(),update(e,b){}})
    注意:全局过滤器声明必须在Vue实例化之前
  • 代码
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>自定义指令</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script><script type="text/javascript" src="../js/dayjs.min.js"></script><style>.base {padding: 5px;height: 100px;}</style></head><body><div id="root"><h1>自定义指令</h1><h2>年龄:<span v-text="age"></span></h2><button @click="addAge">age+1</button><h2>年龄x2:<span v-two-age="age"></span></h2><br><input type="text" v-focos-input:value="age"></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在启动是生成生产提示Vue.directive('two-age', function(element,bindObj){console.log(element)console.log(bindObj)/**1. element: 是HtmlElement,dom对象2. bindObj:绑定对象 v-twoAge 指令的表达式、名称、值等*/element.innerText = bindObj.value * 2});Vue.directive('focos-input',{// 指令与元素成功绑定时bind(element,bindObj){console.log("bind")element.value = bindObj.value},// 指令所在元素被插入页面时inserted(element,bindObj){console.log("inserted")// 操作dom插入后的一些操作element.focus(); // input聚焦},// 指令所在的模板被重新解析时update(element,bindObj) {console.log('updated')element.value = bindObj.valueelement.focus(); // input聚焦}});const vm = new Vue({el: "#root",data: {name: "Vue 扛把子",age:18},methods: {addAge(){this.age++;}},directives:{/**指令函数调用时机1. 指令与元素成功绑定时(初始化)2. 指令所在的模板被重新解析时*/// 'two-age'(element,bindObj){//   console.log(element)//   console.log(bindObj)//   /**//     1. element: 是HtmlElement,dom对象//     2. bindObj:绑定对象 v-twoAge 指令的表达式、名称、值等//   *///   element.innerText = bindObj.value * 2// },// 'focos-input':{//   // 指令与元素成功绑定时//   bind(element,bindObj){//     console.log("bind")//     element.value = bindObj.value//   },//   // 指令所在元素被插入页面时//   inserted(element,bindObj){//     console.log("inserted")//     // 操作dom插入后的一些操作//     element.focus(); // input聚焦//   },//   // 指令所在的模板被重新解析时//   update(element,bindObj) {//     console.log('updated')//     element.value = bindObj.value//     element.focus(); // input聚焦//   }// },}});</script>
</html>
  • 效果

在这里插入图片描述

相关文章:

  • PHP下实现RSA的加密,解密,加签和验签
  • 进程间通信(信号量)
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-面试官和面试记录的分享功能(2)
  • Aviator复习
  • 【快速解决】数据库快速导出成sql文件
  • 【Netty系列】实现HTTP文件服务器
  • 【Kotlin】简介变量类接口
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月31日第94弹
  • [9-3] 串口发送串口发送+接收 江协科技学习笔记(26个知识点)
  • Kafka 如何保证不重复消费
  • C++中 newdelete 与 mallocfree 的异同详解
  • Matlab数据类型
  • Redis7底层数据结构解析
  • Redis:功能特性和应用场景
  • c++ typeid运算符
  • [Windows] Dism++_Mod系统清理优化利器v10.1.1002.1B绿色魔改版
  • 【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 文件事件处理部分)
  • 大数据运维过程中常见的一些操作
  • 【Dv3Admin】工具分页配置文件解析
  • TomatoSCI分析日记:数据分析为什么用csv不用excel
  • dw网页设计成品免费学霸/重庆seo教程博客
  • 中企动力邮箱登陆入口/sem优化和seo的区别
  • 大连哪家公司做网站比较好/新开传奇网站
  • 贵阳网站建设设计公司哪家好/十大计算机培训学校
  • 政务服务网站建设运行情况/石家庄谷歌seo
  • 软件开发兼职网站/婚恋网站排名前三