Vue2 第十节 内置指令和自定义指令

1.之前学过的指令

2. 内置指令

3. 自定义指令

一.之前学过的指令

指令名用法
v-bind单项绑定解析表达式,可以简写为:xxx
v-model双向绑定
v-for遍历数组/对象/字符串
v-on 绑定监听事件,可以简写为@
v-if条件渲染(动态控制节点是否存在)

v-else

条件渲染(动态控制节点是否存在)

v-show

条件渲染(动态控制节点是否展示)

二.内置指令

① 内置指令以及用法汇总

指令名用法
v-text更新元素textContent 会替换所有标签内容,只展示内容,不解析标签
v-html向指定节点中渲染包含html结构的内容
v-once所有节点在初次动态渲染后,就视为静态内容了;   以后数据的改变不会引起v-once所在结构的更新,可以优化一些性能
v-pre跳过其所在节点的编译过程;    可利用它跳过没有使用指令语法,没有使用插值语法的节点,效率会变高,加快编译
v-cloak

本质是一个特殊属性,Vue实例创建完毕并接管容器后,会删掉v-cloak属性

使用css配合v-cloak可以解决网速慢的时候,页面展示出未解析的{{XXX}}值

② 内置标签逐个分析

(1)v-text: 只展示内容,不解析标签

(2)v-html 

  • 作用:向指定节点中渲染包含html结构的内容
  • 与插值语法的区别

   ①  v-html会替换掉节点中的所有内容,{{xxx}}不会

   ② v-html可以识别html结构

  •  注意:v-html有安全性问题

     ① 在网站上动态渲染任何HTML都是非常危险的,容易导致XSS攻击

     ② 一定要在可信的内容上使用v-html ,不要在用户提交的内容上

     ③ XSS攻击就是想办法去让用户的浏览器执行一些这个网页中原本不存在的前端代码,比如使用 document.cookie命令窃取用户的coolkie信息

(3)v-once:n的值刚开始是1,之后就不会再变化了

 (4)v-pre: 适用于没有指令语法,没有使用插值语法的节点

使用v-pre的节点不会去编译

 (5)v-cloak:Vue实例创建完毕并接管容器后,会删除v-cloak属性

下面实现一个5秒后加载vue库,在这期间,有v-cloak的属性就不展示,等到Vue创建完实例并接管容器后,v-cloak会被删除

 三. 自定义指令

1. 函数式

2. 对象式

3.全局自定义指令/局部自定义指令

4.需求案例

      需求1:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍

      需求2:定义一个v-fbind指令,和v-bind功能类似,但是可以让其绑定的input元素默认获取焦点

(1)自定义指令语法

  • 局部指令: 

1.对象式

new Vue({directives:{指令名:配置对象}})

2.函数式

new Vue({directives:{指令名:回调函数}})

3. 全局指令

     (1)Vue.directive(指令名, 配置对象)

     (2)Vue.directive(指令名, 回调函数)

4. 代码举例

(1)需求1:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍

        <h2>当前的n值是:<span v-text="n"></span></h2><!-- 定义一个v-big指令 --><h2>放大10倍后n的值是:<span v-big="n"></span></h2><button @click="n++">点我+1</button>

(2)  函数会有两个参数,第一个参数是定义指令的html元素,第二个参数指令的信息,可以取到指令当前的值, 指令在定义时不加v-, 但是在使用的时候需要加v-

<script type="text/javascript">new Vue({el: '#root',data: {name: 'hello',n: 1},directives: {// 函数式big (element, binding) {//  这里的this是windowconsole.log('big', this)console.log(element, binding)element.innerText = binding.value * 10}}})</script>

 (3)big函数何时会被调用

  •    指令与元素成功绑定时(一上来的时候就会调用)
  •    指令所在模板被重新解析时会调用

 (4)需求2:定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点

(5) 配置对象中常用的三个回调函数

  • bind (element, binding) :指令与元素成功绑定时

  • inserted (element, binding):指令所在元素插入页面时调用

  • update (element, binding):指令所在模板结构被重新解析时调用

 (6)上面获取焦点需要写到inserted中,就是元素插入页面的时候就需要调用,否则不生效,fbind需要写成对象式,因为函数式无法完成上述获取焦点的功能:函数式在指令与元素绑定时和指令所在的模板结构被重新解析时调用,指令与元素绑定时,元素还没有插入页面,所以使用focus()无效,必须写成对象式,将focus()写到inserted函数中,所在元素插入页面之后调用就可以生效

(7)自定义指令命名的一个小问题,如果自定义的指令是多个单词,要使用 xx-yy  的命名法,不要使用小驼峰命名

<h2>放大10倍后n的值是:<span v-big-number="n">

 在定义方法时,需要用引号括起来

也可以使用简写的形式

 (8)注意:自定义函数里面的this是window

 (9)全局指令举例:

  •    函数式写法
Vue.directive('big', function (element, binding) {element.innerText = binding.value * 10
})
  •   对象式写法
 Vue.directive('fbind', {bind (element, binding) {console.log(this) // 此处的this是windowelement.value = binding.valueconsole.log('bind')},inserted (element, binding) {element.focus()console.log('inserted')},update (element, binding) {element.value = binding.valueconsole.log('update')}})

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/19161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ANACONDA安装用于Python编程的Spyder集成开发环境的方法步骤详解

基于ANACONDA安装用于Python编程的Spyder集成开发环境的方法步骤详解 Python作为一种当下流行的编程语言&#xff0c;其编辑器有很多种&#xff0c;本文介绍基于ANACONDA的安装Spyder编辑器的方法步骤。Spyder集成开发环境&#xff0c;和其他的Python开发环境相比&#xff0c;…

C++——类与对象(中)

目录 类的6个默认成员函数构造函数析构函数拷贝构造函数赋值运算符重载const成员函数取地址及const取地址操作符重载 1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时…

TCP三次握手与四次断开

TCP三次握手机制 三次握手是指建立一个TCP连接时&#xff0c;需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。 1、客户端发送建立TCP连接的请求报文&#xff0c;其…

物理分代垃圾回收器

内存结构 内存分配 堆上分配 大多数情况在eden【年轻代中的一个区域】上分配&#xff0c;偶尔会直接在old【老年代】上分配&#xff0c;细节取决于GC的实现。栈上分配&#xff08;发生了指针逃逸&#xff0c;又叫指针逃逸分析——JVM优化&#xff09; 原子类型的局部变量。 G…

eclipse 最新版没有navigator视图如何解决

使用project exploere视图可以显示类似navigator视图 1.显示project exploere视图 window---->show view --->project exploere 2.project exploere视图转换为类似navigator视图 第一步&#xff1a;点击视图右上角三个点或者倒三角&#xff0c;点击fiters and custom…

3DEXPERIENCE用户角色 | Structural Mechanics Engineer 结构力学工程师

真实条件下实施复杂的线性和非线性分析 直观验证设计并更快地做出产品决策 Structural Mechanics Engineer 在基于云的 3DEXPERIENCE 平台上构建&#xff0c;您可对产品行为执行结构线性和非线性静态、低速和高速动态和热仿真。具备材料校准功能&#xff0c;有助于确保材料行为…

Python教程(6)——Python变量的基础类型。|整数类型|浮点数类型|字符串类型|布尔类型|

学习编程语言&#xff0c;不得不忽视变量这个概念。Python 中的变量是用于存储数据的名称&#xff0c;你可以将值赋给变量&#xff0c;并在程序的其他地方使用该变量来引用该值。变量在程序中起到存储和操作数据的作用。 如果学过C/C语言的同学&#xff0c;定义了变量后&#…

无涯教程-Lua - repeat...until 语句函数

与 for 和 while 循环(它们在循环顶部测试循环条件)不同&#xff0c;Lua编程中的 repeat ... until 循环语言在循环的底部检查其条件。 repeat ... until 循环与while循环相似&#xff0c;不同之处在于&#xff0c;保证do ... while循环至少执行一次。 repeat...until loop - …

通过案例实战详解elasticsearch自定义打分function_score的使用

前言 elasticsearch给我们提供了很强大的搜索功能&#xff0c;但是有时候仅仅只用相关度打分是不够的&#xff0c;所以elasticsearch给我们提供了自定义打分函数function_score&#xff0c;本文结合简单案例详解function_score的使用方法&#xff0c;关于function-score-query…

InnoDB引擎底层逻辑讲解——架构之内存架构

1.InnoDB引擎架构 下图为InnoDB架构图&#xff0c;左侧为内存结构&#xff0c;右侧为磁盘结构。 2.InnoDB内存架构讲解 2.1 Buffer Pool缓冲池 2.2 Change Buffer更改缓冲区 2.3 Adaptive Hash Index自适应hash索引 查看自适应hash索引是否开启&#xff1a; show variable…

6.s081(Fall 2022)Lab2: system calls

文章目录 前言其他篇章参考链接0. 前置准备1. System call tracing (moderate)简单分析Hint 1Hint 2Hint 3Hint 4Hint 5测试 2. Sysinfo (moderate) 前言 好像没啥前言 其他篇章 环境搭建 Lab1:Utilities 参考链接 官网链接 xv6手册链接&#xff0c;这个挺重要的&#xff…

GO学习之 多线程(goroutine)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 文章目录 GO系列前言一、并发介绍1.1 进程和线程和协程1.2 并发和并行 二、goroutine介绍三…

AWS——02篇(AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储)

AWS——02篇&#xff08;AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储&#xff09; 1. 前言2. 关于Amazon EFS2.1 Amazon EFS全称2.2 什么是Amazon EFS2.3 优点和功能2.4 参考官网 3. 创建文件系统3.1 创建 EC2 实例3.2 创建文件系统 4. 在Linux实例上挂载…

服务器硬件、部署LNMP动态网站、部署wordpress、配置web与数据库服务分离、配置额外的web服务器

day01 day01项目实战目标单机安装基于LNMP结构的WordPress网站基本环境准备配置nginx配置数据库服务部署wordpressweb与数据库服务分离准备数据库服务器迁移数据库配置额外的web服务器 项目实战目标 主机名IP地址client01192.168.88.10/24web1192.168.88.11/24web2192.168.88…

『赠书活动 | 第十三期』《算力经济:从超级计算到云计算》

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 『赠书活动 &#xff5c; 第十三期』 本期书籍&#xff1a;《算力经济&#xff1a;从超级计算到云计算》 赠书规则&#xff1a;评论区&#xff1a;点赞&#xff5c;收…

前端需要知道的计算机网络知识

1 Web 机制 无论通过有线方式 (通常是网线) 还是无线方式&#xff08;比如 wifi 或蓝牙)&#xff0c;通信需要进行连接&#xff0c;网络上的每台计算机需要链接到路由器&#xff08;router&#xff09;。 路由器确保从一台计算机上发出的一条信息可以到达正确的计算机。计算机…

【Android Framework系列】第9章 AMS之Hook实现登录页跳转

1 前言 前面章节我们学习了【Android Framework系列】第5章 AMS启动流程和【Android Framework系列】第6章 AMS原理之Launcher启动流程&#xff0c;大概了解了AMS的原理及启动流程&#xff0c;这一章节我们通过反射和动态代理对不同Android版本下的AMS进行Hook&#xff0c;实现…

多模块Springboot项目maven单独打包子模块

背景介绍 最近接手一个项目代号XXL&#xff0c;是一个多模块的Springboot项目&#xff0c;在解决了线上的bug之后&#xff0c;想单独给子模块打包上线部署&#xff0c;问题来了。如果整个工程一起mvn -X -DskipTests clean package&#xff0c;打包出来的XXL-web.jar是可以正常…

初学者入门进阶吉他推荐,卡马F1和VEAZEN费森VZ90系列怎么选?详细对比评测,哪一款更符合你的首选!

在新手入门单板吉他圈里&#xff0c;KEPMA卡马F1系列和VEAZEN费森VZ90系列是国内品牌一直都很热销的吉他型号&#xff0c;那么&#xff0c;今天就给大家做一个对比&#xff0c;新手们可以通过各方面评测分析&#xff0c;理性的看看哪把琴适合你买。希望对不知道如何选一把合适吉…

【WebGIS实例】(10)Cesium开场效果(场景、相机旋转,自定义图片底图)

效果 漫游效果视频&#xff1a; 【WebGIS实例】&#xff08;10&#xff09;Cesium开场效果&#xff08;场景、相机 点击鼠标后将停止旋转并正常加载影像底图&#xff1a; 代码 可以直接看代码&#xff0c;注释写得应该比较清楚了&#xff1a; /** Date: 2023-07-28 16:21…