深入理解 Vue2 指令

在 Vue2 中,指令是一种特殊的属性,用于在模板中动态地改变 DOM 元素的行为。Vue2 提供了许多内置指令,使得我们可以更加方便地对 DOM 进行操作。在这篇博客中,我们将深入了解 Vue2 中的一些常用指令。

  1. v-bind 指令:

    v-bind指令用于动态地绑定属性值。通过使用v-bind,我们可以将组件中的数据绑定到 DOM 元素的属性上。例如,如果我们有一个名为myData的属性,那么可以使用v-bind指令将其绑定到一个元素的class属性上,如下所示:

    v-bind用来响应的更新html属
    v-bind:href 可以简写成 :href
     

    <!-- 绑定一个属性 -->
    <img v-bind:src="imageSrc"><!-- 缩写 -->
    <img :src="imageSrc">
    

    绑定属性
     

    <!-- target="_blank" 让跳转的窗口新建打开而不是在原页面跳转 -->
    <!-- <a v-bind:href="linkAddress" v-text="title" target="_blank"></a> -->
    <!-- <a :href="linkAddress" v-text="title" target="_blank"></a> -->
    <a :href="isFlag?bd:qq" v-text="isFlag?'百度':'腾讯'" target="_blank"></a>
    <a :href="isFlag?bd:qq" v-text="isFlag?'百度':'腾讯'" target="_blank"></a>
    <input type="button" @click="updateLink" value="点我会变喔">
    
    const app = new Vue({el: '.app',data: {// linkAddress: 'http://www.baidu.com',// title: '百度'isFlag: true,bd: 'http://www.baidu.com',qq: 'http://www.qq.com',},methods: {updateLink() {// this.linkAddress = 'http://www.qq.com'// this.title = '腾讯'this.isFlag = !this.isFlag}}})
    

    绑定对象

    切换类名:我们可以给v-bind:class 一个对象,以动态地切换class
    注意:v-bind:class指令可以与普通的class特性共存
    v-bind 中支持绑定一个对象
    如果绑定的是一个对象,则键为对应的类名 ;值为对应data中的数据

<ul class="box" v-bind:class="{textColor:isColor, textSize:isSize}"><li>Vue</li><li>Node</li><li>React</li>
</ul>

绑定数组(class)

v-bind中支持绑定一个数组:数组中classA和classB对应为data中的数据

<ul class="box" :class="[classA, classB]"><li>Vue</li><li>Node</li><li>React</li>
</ul>

绑定样式(style)

给style行内添加对象样式

<div :style="styleObj1">绑定样式对象</div>
data:{styleObj1:{color: 'pink',fonstSize: '30px',background: 'black'}
}
<div :style="{ color: activeColor, fontSize: fontSize, background: 'red' }">内联样式</div><!-- 数组语法可以将多个样式对象应用到同一个元素 -->
<div :style="[styleObj1, styleObj2]"></div>
  1. v-on 指令:

    v-on指令用于绑定事件监听器。使用v-on指令,我们可以在元素上监听特定的事件,并在事件被触发时执行相应的函数。例如,我们可以使用v-on:click来监听元素的点击事件:

   <button v-on:click="handleClick"></button>methods: {handleClick() {console.log(213);},},//这里是简写方式<button @click="handleClick"></button>

然后,在组件中定义一个名为handleClick的方法来处理点击事件。

  1. v-if 和 v-show 指令:

    v-if指令用于根据条件来渲染元素。如果条件为真,则渲染元素;否则,该元素将被隐藏。v-show指令也用于根据条件来显示或隐藏元素,但它只是简单地切换元素的显示状态,而不会添加或删除元素。

   <div v-if="isVisible"></div><div v-show="isVisible"></div>data() {return {isVisible: true,};},

其中,isVisible是一个布尔类型的属性,用于控制元素的显示。

  1. v-for 指令:

    v-for指令用于循环遍历数组或对象,并根据每个元素或属性生成相应的元素。例如,我们可以使用v-for指令来生成一个列表:

   <ul><li v-for="item in items">{{ item }}</li></ul>data() {return {items: "[1,2,3, 4,5,65,6],};},

其中,items是一个数组,item是数组中的每个元素。

  1. v-model 指令:

    v-model指令用于实现双向数据绑定。通过使用v-model,我们可以将表单元素的值与组件中的属性进行双向绑定,当表单元素的值发生变化时,组件中的属性也会相应地更新;反之亦然。

   <input v-model="myValue"><span>{{msg}}</span>//这样就可以实现vue的双向数据绑定data() {return {msg: "hjhdh",};},

其中,myValue是一个属性,它的值将与输入框的值保持同步。

  1.v-text

更新元素的 textContent。如果要更新部分的 textContent,需要使用 {{ Mustache }} 插值。

不可以解析标签,可以直接放文字

  <span v-text='msg'>}</span>data() {return {msg: "123",};},

1、v-html

v-html 指令类似于 v-text 指令;
它与v-text区别在于v-text输出的是纯文本,浏览器不会对其再进行html解析,但v-html会将其当html标签解析后输出。
v-html 指令应尽量避免使用,否则会带来危险(XSS攻击 跨站脚本攻击),一般只在可信任内容上使用 v-html,永不用在用户提交的内容上;

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>v-html指令</title>
</head><body><div id="app"><p>{{ msg }}</p><p v-text="msg"></p><p v-html="msg"></p></div><!-- 开发环境版本,包含了有帮助的命令行警告 --><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script>var app = new Vue({el:"#app",data:{msg:"<span>html标签在渲染的时候被源码输出</span>"}})</script>
</body></html>

1、v-slot

子组件声明<slot></slot>,然后父组件使用子组件时,传入对应的 slot 内容。也就是子组件使用<slot>插槽标签,父组件使用v-slot指令,需要两者结合使用,若父组件没声明v-slot内容,子组件slot对应位置则无内容。
当子组件slot内声明有默认内容时,那父组件不声明v-slot,子组件则会使用默认内容,例如:<slot>默认值</slot>
插槽可以包含任何内容,例如:模板代码、 HTML、组件、普通文本

默认插槽

定义

<template><div class="hello"><h3>title</h3><!-- 定义一个插槽,将使用组件标签时传递的内容(innerText/innerHtml)填充到此处 --><slot>默认值,使用组件标签时没有传内容则显示这个</slot></div>
</template>

使用

<template><div class="container"><HelloWorld>123</HelloWorld><HelloWorld><button>456</button></HelloWorld><HelloWorld/></div>
</template>

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

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

相关文章

android pdf框架-4,分析vudroid源码1

前言 上文基于recyclerview修改,没有自定义layoutmanager,其实并不是一个好的阅读器,缩放功能有限,放大了容易内存溢出. 本文,从修改vudroid源码来完成一个阅读器. 为什么是vudroid? 它是基于view系统的相对完整的功能代码没有那么抽象,简洁容易修改功能没有完善,有修改空间…

关于正则中的Pattern和Matcher的使用

关于正则中的Pattern和Matcher的使用 1 简介2 语法3 案例 在项目中, 经常需要对请求的数据进行格式,内容校验, 而使用正则表达式, 比较简单优雅实现校验功能. 故记录一下正则中Pattern和Matcher的使用. 1 简介 ​ java.util.regex包下的Pattern和Matcher都是Java中用于正则表达…

Spring启动生命周期

Spring Boot 生命周期详解 Spring Boot 应用程序的生命周期包含几个阶段&#xff0c;每个阶段都有特定的事件和钩子&#xff0c;允许开发者在应用程序的不同生命周期阶段插入自定义逻辑。以下是 Spring Boot 生命周期的主要阶段和对应的事件&#xff1a; 准备阶段&#xff1a;…

【Docker实操】部署php项目

概述 最终达成的容器部署结构和原理如下图&#xff1a; 一、获取nginx、php官方镜像 docker pull nginx //拉取nginx官方镜像 docker pull php:7.4-fpm //拉取php官方镜像需要获取其他可用的php版本&#xff0c;可以上【docker hub】搜索【php】&#xff0c;所有的【xxx-fp…

【工具】阿莫智能设备之脱机烧录器K202C-1

注意&#xff0c;本文档仅仅是介绍烧录器的资料构成&#xff0c;并非烧录器的说明书&#xff0c;详细请看各对说明书及视频。 1. 资料图解 首先需要下载资料&#xff0c;通常稳定发布版本可以从 www.amomcu.cn 下载&#xff0c; 也可以向我们客服获取最新版本&#xff0c; 获…

浅谈redis之SDS

SDS 什么是SDSSDS结构len的作用free的作用buf的作用简单示例 SDS机制重新分配内存分配内存机制小于1MB情况大于1MB情况为什么这样分配 惰性释放内存 什么是SDS SDS&#xff1a;全名 simple dynamic string&#xff0c;意为简单动态字符串&#xff0c;作为redis里的一种数据结构…

六.生成makefile文件 并基于makefile文件编译opencv

1.点击【Generate】 生成makefile文件 2.进入目录下编译opencv源码&#xff0c;mingw32-make -j 8 3..编译出现报错 4.取消[WITH_OPENCL_D3D11_NV]选项&#xff0c;再次【configure】【generate】 然后再次编译&#xff1a;mingw32-make -j 8

科技守护大唐遗宝,预防保护传承千年

​ 一、“大唐遗宝——何家村窖藏出土文物展” 陕西历史博物馆的“唐朝遗宝——何家村窖藏出土文物展”算得上是博物馆展览的典范。展览不仅在于展现了数量之多、等级之高、种类之全&#xff0c;更在于对唐朝历史文化的深入揭露。 走入大唐财产展厅&#xff0c;好像穿越千年前…

解决TCP中Bind failed烦恼

文章目录 概要样例代码 概要 当第一次运行服务端时正常&#xff0c;第二次运行时出现Bind failed问题。 在实际使用中&#xff0c;如果您尝试启动一个服务端程序并且遇到了 “Bind failed” 的错误信息&#xff0c;这通常意味着尝试绑定&#xff08;bind&#xff09;的端口已…

Boss直聘聊天问答

主动打招呼常用语&#xff1a; 1.您好&#xff0c;我看到贵公司的招聘需求很符合我的技术栈&#xff0c;方便约个面试聊一聊嘛&#xff1f; 2.我叫郭治江&#xff0c;2022年毕业&#xff0c;物联网工程专业&#xff0c;目前从事Java开发工作已经三年了&#xff0c;上家公司是…

推理任务稳定提点大揭秘:力大砖飞背后的科学

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

GB/T 17639-2023 长丝纺粘针刺非织造土工布检测

长丝纺粘针刺非织造土工布是指以聚酯或聚丙烯为原料&#xff0c;经纺丝、铺网、针刺加固而成的长丝纺粘针刺非织造布。 GB/T 17639-2023 长丝纺粘针刺非织造土工布测试项目&#xff1a; 测试要求 测试标准 纵横向抗拉强度 GB/T 15788 纵横向最大负荷下伸长率 GB/T 15788 …

Nginx相关命令

进入nginx程序目录&#xff0c;使用cmd在本目录下打开&#xff0c; 启动nginx&#xff1a;使用命令start nginx 本地重启nginx&#xff1a;nginx -s reload 停止&#xff1a;nginx -s stop 或者 nginx.exe -s quit 查看Nginx版本&#xff1a;nginx -v

功率MOSFET体二极管的连续载流能力

功率MOSFET体二极管的连续载流能力 1.概述2.MOSFET 漏源电压限制3.体二极管电流能力4.计算案例5.降额 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 在电力电子领域或者在大功率应用场境下&#xff0c;我们经常会用到开关管功率MOSFET以及其内部的二极管。 那…

Nginx是什么?怎么用?

Nginx介绍 Nginx (读作 “engine-x”) 是一款高性能的HTTP和反向代理服务器&#xff0c;同时也可用作IMAP/POP3/SMTP代理服务器。由俄罗斯程序员Igor Sysoev开发&#xff0c;首次公开发布于2004年。Nginx以其稳定性、高性能和低内存消耗闻名&#xff0c;尤其擅长处理静态文件、…

2.23学习总结

铅球杯https://www.luogu.com.cn/problem/B3911 题目描述 蓝边铅球组织了“铅球杯”数据标注大赛。为了实现 Au 大满贯的宏大征途&#xff0c;LeAuingZ 报名参加了比赛。 蓝边铅球给出了 &#xfffd;N 个 int 类型变量的名字及其值&#xff0c;并要求 LeAuingZ 对 &#xfffd…

安全生产:AI视频智能分析网关V4如何应用在企业安全生产场景中?

随着科技的不断进步&#xff0c;视频智能分析技术在安全生产领域中的应用越来越广泛。这种技术通过计算机视觉和人工智能算法&#xff0c;可以对监控视频进行自动分析和处理&#xff0c;以实现多种功能&#xff0c;如目标检测、行为识别、异常预警等。今天我们以TSINGSEE青犀AI…

Boom 3D for Mac 破解版(3D环绕立体声音效增强软件)2.0.2中文支持M3

Mac上想要听一场极致的音乐或看一场畅快淋漓的电影&#xff1f;这些Boom 3D for Mac都可以帮您实现&#xff0c;是一款Mac音效增强工具&#xff0c;可以将二维度的音效转换成三维度&#xff0c;让您彻底的享受一下极致的听觉盛宴&#xff01; Boom 3D 2.0.2 Mac版主打音乐播放器…

【Rust】——控制流(if-else,循环)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

centos7 arm服务器编译安装onnxruntime-gpu

前言 ONNX Runtime是适用于Linux,Windows和Mac上ONNX格式的机器学习模型的高性能推理引擎,但在arm服务器上,onnxruntime只有CPU版的,GPU版的没有,因此需要自行去编译GPU版本的才可以。 环境准备 1、python3.8 2、cmake:2.26.0版本以上,可以直接下载aarch64版本的进行…