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

news/2024/4/27 8:30:30/文章来源:https://blog.csdn.net/chenjieyujiayou/article/details/132010040

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.luyixian.cn/news_show_340079.aspx

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

相关文章

大道至简,炎凰数据要做极致好用的国产大数据分析基础软件|爱分析调研

自2000年代初大数据技术诞生以来&#xff0c;为了应对不断丰富的应用场景、日益复杂的数据类型&#xff0c;以及逐渐膨胀的数据规模&#xff0c;大数据业内逐渐发展出了多种技术路线。 到今天&#xff0c;大数据产品和技术已处于百花齐放的状态&#xff0c;国内市场近年来也因…

搭建Django+pyhon+vue自动化测试平台

Django安装 使用管理员身份运行pycharm使用local 1 pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple 检查django是否安装成功 1 python -m django --version 创建项目 1 1 django-admin startproject test cd 切换至创建的项目中启动django项目…

Ubuntu18.04 安装opencv 4.8.0教程(亲测可用)

1. 安装准备 安装前需要下载一些必须的依赖项。 不同版本opencv依赖会有不同&#xff0c;具体见官网opencv安装 sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-…

搭建 Vite + Vue3 + Pinia + Element Plus 项目。

一、基础项目搭建&#xff1a; 技术栈 技术栈描述官网Vue3渐进式 JavaScript 框架https://cn.vuejs.org/Element Plus基于 Vue 3&#xff0c;面向设计师和开发者的组件库https://element-plus.gitee.io/zh-CN/Vite前端开发与构建工具https://cn.vitejs.dev/guide/TypeScript开…

Mapping温度分布验证选择数据记录仪时需要考虑的13件事

01 什么是温度分布验证&#xff1f; 温度分布验证是通过在规定的研究时间内测量定义区域内的多个点来确定特定温度控制环境或过程&#xff08;如冷冻柜、冰箱、培养箱、稳定室、仓库或高压灭菌器&#xff09;的温度分布的过程。温度分布验证的目标是确定每个测量点之间的差异&…

新手用户选择阿里云服务器地域、实例、带宽、操作系统经验参考

无论是个人还是企业用户&#xff0c;部署自己的网站或者APP客户端、小程序等&#xff0c;都需要用到服务器&#xff0c;现在流行的都是使用云服务器&#xff0c;考虑到性价比大家现在都喜欢选择阿里云服务器。但是新手用户往往在面对阿里云服务器地域、实例、带宽、操作系统等众…

读书笔记-《ON JAVA 中文版》-摘要21第十九章 类型信息-2]

文章目录 第十九章 类型信息7. 动态代理8. Optional类9. 接口和类型10. 本章小结 第十九章 类型信息 7. 动态代理 代理是基本的设计模式之一。一个对象封装真实对象&#xff0c;代替其提供其他或不同的操作—这些操作通常涉及到与“真实”对象的通信&#xff0c;因此代理通常…

Springboot部署ELK实战

Springboot部署ELK实战 1、部署docker、docker-compose环境安装docker安装docker-compose 2、搭建elk1、构建目录&&配置文件1、docker-compose.yml 文档2、Kibana.yml3、log-config.conf 2、添加es分词器插件3、启动 3、Springboot项目引入es、logStash配置1、引入依赖…

后端进阶之路——Spring Security构建强大的身份验证和授权系统(四)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ 解决算法&#xff0c;一个专栏就够了★ ★ 架…

WebDAV之π-Disk派盘 + DEVONthink

DEVONthink是由一家来自德国的老牌软件开发商发布的「知识管理」软件,运行于 Mac/iOS 平台。官方自己定位为全方位(中文环境下略有遗憾)帮助你实现知识管理,可以称之为“模块级”应用了。 DEVONthink还支持各种云服务同步,文件管理您的终极文件管理应用、文件、图片与连接远…

Centos7 安装yum

1、检查主机名和网络并且配置/etc/hosts文件 查看主机名&#xff1a;hostname 查看ip :ifconfig vi /etc/hosts//添加把主机名和IP配置进去hosts文件192.18.56.111 orcale12c2、关闭防火墙 systemctl status firewalld.service//检查防火墙状态 暂时关闭防火墙&#xff0c;下…

20.4 HTML 表单

1. form表单 <form>标签: 用于创建一个表单, 通过表单, 用户可以向网站提交数据. 表单可以包含文本输入字段, 复选框, 单选按钮, 下拉列表, 提交按钮等等. 当用户提交表单时, 表单数据会发送到服务器进行处理.action属性: 应指向一个能够处理表单数据的服务器端脚本或UR…

安卓证书生成教程

1.下载安装JDK文件&#xff08;如已安装请跳过&#xff09; 根据电脑系统版本下载JDK版本文件 下载地址&#xff1a;[https://www.oracle.com/java/technologies/downloads/](https://www.oracle.com/java/technologies/downloads/) 如果电脑上安装过JDK文件可以跳过2.生成密钥…

Spring源码篇(九)自动配置扫描class的原理

文章目录 前言ClassLoader如何加载jar包里的class自动配置扫描class的原理spring中的加载方式源码总结 前言 spring是怎样通过ComponentScan&#xff0c;或者自动配置扫描到了依赖包里class的&#xff1f; ClassLoader 这里涉及到了class Loader的机制&#xff0c;有些复杂&…

达芬奇架构 DaVinci Core - 小记

文章目录 官方文档 &#xff1a; HUAWEI Da Vinci Architecture https://support.huaweicloud.com/intl/en-us/odevg-A800_9000_9010/atlaste_10_0007.htmlPPT : DaVinci: A Scalable Architecture for Neural Network Computing https://www.cmc.ca/wp-content/uploads/2020/0…

一篇文章带你基本了解Java 集合框架、核心接口、以及需要掌握的各个数据结构

一篇文章带你基本了解Java 集合框架 基本概念&#xff1a; ​ 早在 Java 2 中之前&#xff0c;Java 就提供了特设类。比如&#xff1a;Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。 ​ Java集合框架&#xff08;Java Collections Framework&…

Pytorch Tutorial【Chapter 2. Autograd】

Pytorch Tutorial 文章目录 Pytorch TutorialChapter 2. Autograd1. Review Matrix Calculus1.1 Definition向量对向量求导1.2 Definition标量对向量求导1.3 Definition标量对矩阵求导 2.关于autograd的说明3. grad的计算3.1 Manual手动计算3.2 backward()自动计算 Reference C…

极光笔记 | 浅谈企业级SaaS产品的客户成长旅程管理(上)—— 分析篇

本文作者&#xff1a;陈伟&#xff08;极光用户体验部高级总监&#xff09; “企业级SaaS产品与C端互联网产品特征差异很大&#xff0c;有些甚至是截然相反&#xff0c;这些特征也会成为后续客户成长旅程的重要影响变量。本文就如何设计并服务好企业级SaaS产品客户成长旅程进行…

全网最强,Python接口自动化测试实战-接口参数关联(购物实例)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 什么是参数关联&a…

Spring之浅谈AOP技术

目录 前言 1.AOP的作用 2.AOP核心 Spring实现AOP 3.AOP工作流程 4.AOP核心概念 5.AOP通知类型 5.1类型介绍 5.2通知类型的使用 前置通知 后置通知 ​​​​​​​环绕通知 前言 AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程&#xff09;&…