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

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>
  • 效果

在这里插入图片描述

http://www.xdnf.cn/news/10260.html

相关文章:

  • *JavaScript中的Symbol类型:唯一标识符的艺术
  • # STM32F103 PA0到PA4多路ADC采集配置和采集程序
  • SQL进阶之旅 Day 9:高级索引策略
  • sass高阶应用
  • 基于Web的濒危野生动物保护信息管理系统设计(源码+定制+开发)濒危野生动物监测与保护平台开发 面向公众参与的野生动物保护与预警信息系统
  • resubmit v1.2.0 新特性支持类级别防止重复提交
  • 深度学习总结(40)
  • 数据集笔记:SeekWorld
  • 【Java笔记】Spring IoC DI
  • YOLOv8 移动端升级:借助 GhostNetv2 主干网络,实现高效特征提取
  • 【CC协议】知识共享许可协议(Creative Commons Licenses)体系解析
  • 注销微软账户
  • android 媒体框架之MediaCodec
  • MySQL中COUNT(*)、COUNT(1)和COUNT(字段名)的深度剖析与实战应用
  • 谷歌:贝叶斯框架优化LLM推理反思
  • CMake指令:list()
  • MySQL(48) 什么是ZEROFILL属性?
  • 宇树机器狗go2添加3d雷达(下)添加velodyne系列雷达
  • 《高等数学》(同济大学·第7版) 第一节《映射与函数》超详细解析
  • 数据库只更新特定字段的两种方式(先读后写 vs. 动态组织 SQL)-golang SQLx 实现代码(动态组织 SQL)
  • 索引的选择与Change Buffer
  • Linux进程信号
  • 车载诊断架构SOVD --- 车辆发现与建连
  • 项目:贪吃蛇实现
  • AI与智能驾驶的关系和原理:技术融合与未来展望-优雅草卓伊凡一、AI大模型基础原理与智能驾驶
  • 【Linux系列】Linux/Unix 系统中的 CPU 使用率
  • C++23 已移除特性解析
  • 电子电路:怎么理解时钟脉冲上升沿这句话?
  • ASP.NET Core SignalR的基本使用
  • 《深入解析SPI协议及其FPGA高效实现》-- 第一篇:SPI协议基础与工作机制