vue 模板语法 ( 插值表达式 | 属性绑定 | 双向数据绑定 | 指令 | 按键修饰符 )

文章目录

  • 插值表达式
  • 属性绑定
  • 双向数据绑定
  • 样式绑定
      • 1. 使用 v-bind:class 绑定类名
      • 2 使用 v-bind:style 绑定内联样式
        • 3 使用计算属性动态生成样式对象或类名数组
        • 4. 组合使用 v-bind:class 和 v-bind:style
        • 注意事项
  • 指令 v-cloak
  • 指令
  • 按键修饰符
    • 一、常用按键修饰符
    • 二、系统按键修饰符
    • 三、注意事项

插值表达式

插值表达式(Interpolation)是一种在模板中输出数据的方式。它允许你将 Vue 实例中的数据绑定到 HTML 中,从而实现数据的动态显示。插值表达式通常使用双大括号 {{ }} 来包含要输出的数据。

Vue 实例,其中包含一个数据属性 msg,可以在 HTML 模板中使用插值表达式来输出这个数据

   <div id="app"><!--填充数据-->{{msg}}<!--简单运算-->{{1+2}}</div><script type="text/javascript">var vm = new Vue({ //vm变量 存储vue实例el: '#app', //元素的挂载位置(数据填充位置) 值是css选择器和dom元素data: {msg: 'hello world'} //data 数据值是对象})</script>

属性绑定

在 Vue.js 中,属性绑定(Property Binding)是一种将数据绑定到 HTML 元素属性的方法。这允许你动态地更新元素的属性,而无需手动操作 DOM。
Vue.js 提供了简洁的语法来实现这一点,通常使用 v-bind 指令,或者其缩写

	<div id="app"><!--动态属性绑定--><!--方法一: v-bind指令--><a v-bind:href="url">百度</a><!--方法二:缩写形式--><a :href="url">百度</a><button @click="changefn">切换</button></div><script type="text/javascript">//属性绑定var vm = new Vue({el: '#app',data: {url: "http:www.baidu.com"},methods: {changefn: function() {this.url = ""}}})</script>

双向数据绑定

概念: 双向数据绑定是指当数据发生变化时,视图会自动更新,而当用户在视图中输入数据时,数据也会自动更新。这种机制确保了数据和视图之间始终保持同步

使用 v-model 指令
v-model 是 Vue.js 中最常用的指令之一,它主要用于表单元素的双向数据绑定。当用户在表单元素中输入内容时,v-model 会自动更新绑定的数据,同时当数据发生变化时,表单元素也会自动更新。

	<div class="v"><p>{{msg}}</p><!--MVVM设计思想M (model): 模型 data中的数据V(view) :视图 本质 domVM(View-Model) view与model的结合  实现控制逻辑 将view与model结合在一起 --><input type="text" v-model="msg" /></div><script type="text/javascript">var vm = new Vue({el: '.v',data: {msg: '双向数据绑定'}})</script>

样式绑定

1. 使用 v-bind:class 绑定类名

对象语法
你可以将一个对象绑定到 class 属性上,对象的键是类名,值是布尔值,表示该类是否应该被添加到元素上。

<div :class="{ active: isActive, 'text-danger': hasError }"></div>

在这个例子中,active 类会在 isActive 为 true 时被添加,text-danger 类会在 hasError 为 true 时被添加。

数组语法
你还可以将一个数组绑定到 class 属性上,数组中的每个元素都是一个类名或者是一个包含类名和布尔值的对象。

<div :class="[isActive ? 'active' : '', errorClass]"></div>

在这个例子中,如果 isActive 为 true,则 active 类会被添加,同时 errorClass 的值(假设它是一个字符串类名)也会被添加为类名。

	<div id="app"><!--class样式--><!--对象语法  :class="{类名:属性(一般以is开头 说明该类名是否显示)}"--><div v-bind:class="{box:isBox,bgbox:isBgbox}">div内容</div><button v-on:click="changeClass">切换</button><!--数组语法--><div v-bind:class="[boxClass,bgBoxClass]">divdiv</div><button v-on:click="changeClass2">切换2</button></div><script type="text/javascript">var vm = new Vue({el: '#app',data: {isBox: false,isBgbox: true,boxClass: "box",bgBoxClass: "bgbox", //类名},methods: {changeClass: function() {this.isBox = !this.isBox;this.isBgbox = !this.isBgbox;},changeClass2: function() {// this.boxClass = "";this.bgBoxClass = "";}}})</script>

2 使用 v-bind:style 绑定内联样式

对象语法
你可以将一个对象绑定到 style 属性上,对象的键是 CSS 属性名,值是对应的属性值。

<div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>

在这个例子中,color 样式会根据 activeColor 的值来设置,fontSize 样式会根据 fontSize 的值加上 ‘px’ 单位来设置。

数组语法
你还可以将一个数组绑定到 style 属性上,数组中的每个元素都是一个对象,每个对象都包含一些 CSS 属性名和对应的属性值。这些对象会被合并成一个样式对象应用到元素上。


<div :style="[baseStyles, overridingStyles]"></div>

在这个例子中,baseStyles 和 overridingStyles 会被合并成一个样式对象,如果 overridingStyles 中有与 baseStyles 相同的属性,则 overridingStyles 中的值会覆盖 baseStyles 中的值。

3 使用计算属性动态生成样式对象或类名数组

对于更复杂的样式逻辑,你可以使用计算属性来动态生成样式对象或类名数组。

<div :class="computedClass" :style="computedStyle"></div>
javascript
export default {data() {return {isActive: true,hasError: false,activeColor: 'red',fontSize: 14};},computed: {computedClass() {return {active: this.isActive,'text-danger': this.hasError};},computedStyle() {return {color: this.activeColor,fontSize: this.fontSize + 'px'};}}
};

在这个例子中,computedClass 和 computedStyle 是计算属性,它们根据组件的状态动态生成类名对象和样式对象。

4. 组合使用 v-bind:class 和 v-bind:style

在实际项目中,你经常需要同时使用 v-bind:class 和 v-bind:style 来实现复杂的样式绑定。

<div :class="classObject" :style="styleObject"></div>

在这个例子中,classObject 和 styleObject 分别用于绑定类名和样式,实现更加灵活的样式控制。

注意事项

当使用 v-bind:class 或 v-bind:style 时,你可以同时使用静态类名和静态样式,它们会与动态绑定的类名和样式合并。
对于内联样式,确保属性值是正确的 CSS 值,比如颜色值需要带上颜色单位(如 ‘px’、‘%’、‘em’ 等),颜色可以是颜色名、十六进制值、RGB/RGBA 值等。
在大型项目中,为了避免样式冲突和提高可维护性,建议使用 BEM(块元素修饰符)命名规范来组织 CSS 类名。```


指令 v-cloak

<style type="text/css">[v-vloak] {display: none;}</style>
	<div id="app"><!--填充数据-->{{msg}}<!--简单运算-->{{1+2}}<!--页面刷新会出现{{}}插值表达式 带vue编译完后显示数据 解决方案添加v-cloak的指令`   1:样式 v-vloak{dispaly:none}2:在插值表达式所在标签添加v-cloak原理: 先通过样式隐藏内鹅绒,然后再内存中进行值得替换,替换好之后再显示最终的结果--><div v-cloak>{{msg}}</div></div><script type="text/javascript">var vm = new Vue({ //vm变量 存储vue实例el: '#app', //元素的挂载位置(数据填充位置) 值是css选择器和dom元素data: {msg: 'hello world'} //data 数据值是对象})</script>

指令

Vue.js提供了一系列指令来帮助开发者更方便地操作和管理DOM元素。以下是一些Vue.js中常见的指令及其作用:

1: 内容处理指令:v-text, v-html ,v-once,v-pre
2: 属性绑定指令:v-bind, class绑定,style绑定

<div v-bind:class="{ active: isActive, 'text-danger': hasError }"></div>
<div :class="{ active: isActive, 'text-danger': hasError }"></div>
<div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>

3: 条件渲染指令:v-if ,v-else-if,v-else,v-show
4: 列表渲染指令:v-for
5:事件处理指令
v-on
作用:监听DOM事件并执行一些JavaScript代码。v-on指令可以缩写为@符号。

<button v-on:click="doSomething">点击我</button>,或简写为<button @click="doSomething">点击我</button>

事件修饰符
作用:为v-on指令提供事件修饰符,以改变事件触发的行为。


.stop:阻止事件冒泡。<button @click.stop="doSomething">点击我</button>
.prevent:阻止默认事件。<a href="http://www.baidu.com" @click.prevent="doSomething">百度</a>
.once:事件将只会触发一次。<button @click.once="doSomething">点击我</button>
<!--事件绑定写法:v-on指令 <input type="button" v-on:click='num++'/>v-on简写指令 <input type="button" @click='num++'/>--><div id="app"><p>{{num}}</p><!--v-on指令 事件调用--><input type="button" v-on:click='num++' value="点击" /><input type="button" @click='num++' value="点击2" /><!--事件函数调用方式1:直接绑定函数名称默认事件对象作为函数的第一个参数传递的--><input type="button" @click='clickNum' value="调用函数名称" /><!--2:调用函数默认事件对象作为最后一个参数传递的,并且事件对象的名称是$event--><input type="button" @click='clickNum()' value="调用函数" /><!--普通传参--><input type="button" @click='clickNum(123)' value="普通参数" /><!--传递事件对象参数  最后一个参数是事件对象--><input type="button" @click='clickNum(123,$event)' value="事件对象参数" /><!--事件冒泡--><div @click="maopao()"><!--传统的阻止事件冒泡--><!-- <button type="button" @click="stopmp">子元素{{num2}}</button> --><!--事件修饰符 阻止事件冒泡--><button type="button" @click.stop="childClick">子元素{{num2}}</button></div><!--阻止默认行为 多用于a标签和form表单中--><!-- <form action="" @submit.prevent="preventfn"><input type="text" value="" /><submit >提交</submit></form> --><a href="www.baidu.com" @click.prevent="preventfn">链接 </a></div><script type="text/javascript">var vm = new Vue({el: '#app',data: {num: 0,num2: 0},methods: {clickNum: function(p, event) {this.num++; //this值得是Vue实例对象// console.log(this === vm);console.log(p, event);},clickNum2: function() {},maopao: function() {this.num2++,console.log("父元素点击了");},stopmp: function(event) {event.stopPropagation();},childClick: function(event) {this.num2 += 2,console.log("子元素点击了");},preventfn: function() {console.log("阻止了默认事件");}}})</script>

6: 表单指令 v-model

	<div id="app"><div>{{msg}}</div><!--v-text 填充纯文本 比插值表达式更简洁--><div v-text="msg"></div><!--v-html 填充html片段不推荐使用 本网站内部使用,第三方数据不可以用--><div v-html="msg2"></div><!--v-pre填充原始数据显示原始信息,跳过编译过程--><div v-pre>{{msg}}</div><!--v-once的应用场景 : 显示的信息后续不需要再次修改将元素或组件的内容只渲染一次,并将其缓存起来。以后再次渲染时,该元素或组件的内容将不再重新计算。--><div v-once>{{msg3}}</div></div><script type="text/javascript">var vm = new Vue({ //vm变量 存储vue实例el: '#app', //元素的挂载位置(数据填充位置) 值是css选择器和dom元素data: {msg: 'hello world',msg2: '<h1>html</h1>',msg3: 'once  只编译一次'} //data 数据值是对象})</script>

按键修饰符

Vue中的按键修饰符主要用于监听键盘上的按钮被按下时触发对应的事件函数。

一、常用按键修饰符

.enter:捕获回车键(Enter)事件。
.tab:捕获Tab键事件,注意这个修饰符通常与keydown事件一起使用。
.delete:捕获删除键(Delete)和退格键(Backspace)事件。
.esc:捕获取消键(Escape)事件。
.space:捕获空格键(Space)事件。
.up:捕获上箭头键(Up Arrow)事件。
.down:捕获下箭头键(Down Arrow)事件。
.left:捕获左箭头键(Left Arrow)事件。
.right:捕获右箭头键(Right Arrow)事件。

二、系统按键修饰符

.ctrl:捕获Ctrl键事件,通常与其他按键组合使用。
.alt:捕获Alt键事件,通常与其他按键组合使用。
.shift:捕获Shift键事件,通常与其他按键组合使用。
.meta:在Mac系统键盘上对应Command键(⌘),在Windows系统键盘上对应Windows徽标键(⊞)。

  <form action=""><!--按下enter键触发--><label for="name">姓名</label><input type="text" v-model="name" id="name" @keyup.enter="submitBtn" /><!--按下delete键触发--><label for="">姓名</label>年龄<input type="text" v-model="age" id="age" @keyup.delete="delBtn" /><!--自定义按键修饰符--><input type="text" v-model="num" @keyup.ff="numBtn" /><input type="button" value="提交" @click="submitBtn" /></form><script type="text/javascript">//自定义按键修饰符 // 规则 自定义按键修饰符名字是自定义的,但是对应的值是按键对应event.keyCode值,也可以直接用@keyup.keyCode值//可以通过全局config.keyCodes 对象自定义按键修饰符别名Vue.config.keyCodes.ff = 65var vm = new Vue({el: '#app',data: {name: '',age: '',num: ''},methods: {submitBtn: function() {console.log(this.name);},delBtn: function() {this.name = "",this.age = ""},numBtn: function(event) {console.log(event.keyCode);},}})</script>

三、注意事项

按键修饰符通常与v-on指令一起使用,可以简写为@符号。
大部分按键都可以使用按键修饰符,但多个单词的按键需要改名为短横线命名,例如PrintScreen按键需要改为print-screen才能使用。
在使用系统按键修饰符(如Ctrl、Alt、Shift、Meta)时,需要确保用户同时按下了这些键和其他按键才能触发相应的事件。
Vue还提供了.exact修饰符,用于控制由精确的系统修饰符组合触发的事件。例如 <button v-on:click.ctrl.exact="onCtrlClick">A</button>表示只有Ctrl键被按下时才触发onCtrlClick方法。

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

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

相关文章

【ubuntu18.04】vm虚拟机复制粘贴键不能用-最后无奈换版本

我是ubuntu16版本的 之前费老大劲安装的vmware tools结果不能用 我又卸载掉&#xff0c;安装了open-vm-tools 首先删除VMware tools sudo vmware-uninstall-tools.pl sudo rm -rf /usr/lib/vmware-tools sudo apt-get autoremove open-vm-tools --purge再下载open-vm-tools s…

机器学习-37-对ML的思考之机器学习发展的三个阶段和驱动AI发展三驾马车的由来

文章目录 1 引言2 机器学习发展的三个阶段2.1 萌芽期(20世纪50年代)2.1.1 达特茅斯会议(人工智能诞生)2.1.2 机器学习名称的由来2.2 知识期(20世纪80年代)2.2.1 知识瓶颈问题2.2.2 机器学习顶级会议ICML2.2.3 Machine Learning创刊2.2.4 神经网络规则抽取2.3 算法期(20世纪90年…

【景观生态学实验】实验二 景观类型分类

实验目的 1.掌握ArcGIS软件的基本操作&#xff1a;通过课堂理论学习与实验课的实际动手操作&#xff0c;学习并熟练掌握如何利用ArcGIS软件对遥感影像进行一些较为基础的数据处理与分析工作&#xff0c;具体包括波段合成、图像镶嵌、图像裁剪与图像分类等&#xff1b; 2.熟悉…

GPT-5 要来了:抢先了解其创新突破

Microsoft 的工程师计划于 2024 年 11 月在 Azure 上部署 Orion (GPT-5)。虽然这一版本不会向公众开放&#xff0c;但其上线被视为人工智能领域的一个重要里程碑&#xff0c;并将产生深远的影响。 文章目录 GPT-5 真的要来了GPT-4 的局限性GPT-5 的创新突破与遗留挑战GPT-5 预期…

Cuda和Pytorch的兼容性

在安装 PyTorch 时&#xff0c;CUDA 的兼容性通常需要特别注意。CUDA 的兼容性分为两部分&#xff1a;PyTorch 本身的 CUDA 版本和你的系统上安装的 CUDA 驱动版本。 CUDA 驱动的兼容性 1.CUDA 驱动向下兼容&#xff1a;CUDA 驱动程序一般是向下兼容的。这意味着如果你的系统…

网络协议之TCP

一、定义 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c;由IETF的RFC 793定义。TCP旨在适应支持多网络应用的分层协议层次结构。在因特网协议族&#xff08;Internet p…

web与网络编程

使用HTTP协议访问Web 通过发送请求获取服务器资源的Web浏览器等&#xff0c;被成为客户端(client)。 Web使用一种名为HTTP(超文本传输协议)的协议作为规范&#xff0c;完成从客户端到服务器端等一系列运作流程。 可以说&#xff0c;Web时建立在HTTP协议上通信的。 网络基础T…

FromData格式提交接口时入参被转成JSON格式问题

本地上传文件后通过事件提交文件&#xff0c;一般先通过前端组件生成文本流&#xff0c;在通过接口提交文本流&#xff0c;提交文本流一般使用FormData的入参形式传入&#xff0c;接口请求头也默认"Content-Type": “multipart/form-data”&#xff0c;但是某些场景统…

Springboot 微信小程序定位后将坐标转换为百度地图坐标,在百度地图做逆地址解析

问题解析以及解决思路 业务:微信小程序定位后,将坐标转换为百度地图坐标,在百度地图做逆地址解析 问题:微信小程序的定位是拿的腾讯地图的经纬度,但是我们app端这边使用的百度地图,如果直接使用腾讯地图的经纬度再使用腾讯地图的逆地址解析需要腾讯和百度商业授权,为了减少授权…

Python爬虫----python爬虫基础

一、python爬虫基础-爬虫简介 1、现实生活中实际爬虫有哪些&#xff1f; 2、什么是网络爬虫&#xff1f; 3、什么是通用爬虫和聚焦爬虫&#xff1f; 4、为什么要用python写爬虫程序 5、环境和工具 二、python爬虫基础-http协议和chrome抓包工具 1、什么是http和https协议…

人力资源招聘系统-提升招聘效率与质量的关键工具

在当今这个竞争激烈的商业环境中&#xff0c;企业要想在市场中立于不败之地&#xff0c;关键在于拥有高素质的人才队伍。然而&#xff0c;传统的招聘方式往往效率低下&#xff0c;难以精准匹配企业需求与人才特质&#xff0c;这无疑给企业的发展带来了不小的挑战。 随着科技的飞…

蓝桥杯介绍

赛事背景与历程 自2009年举办以来&#xff0c;蓝桥杯已经连续举行了多届&#xff0c;成为国内领先的信息技术赛事。2022年&#xff0c;蓝桥杯被教育部确定为2022—2025学年面向中小学生的全国性竞赛活动&#xff0c;并入选国家级A类学科竞赛。 参赛对象与组别 蓝桥杯的参赛对…

Python3.11.9+selenium,获取图片验证码以及输入验证码数字

Python3.11.9+selenium,获取图片验证码以及输入验证码数字 1、遇到问题:登录或修改密码需要验证码 2、解决办法: 2.1、安装ddddocr pip install ddddocr 2.2、解析验证码函数 import ddddocr def get_capcha_text():#获取验证码图片ele_pic = driver.find_element(By.XPAT…

2024-11-16-机器学习方法:无监督学习(1) 聚类(上)

文章目录 机器学习方法&#xff1a;无监督学习&#xff08;1&#xff09; 聚类&#xff08;上&#xff09;1. 聚类的基本概念1.1 聚类的概念1.2 聚类的功能1.3 聚类的算法 2. 相似度或距离2.1 闵可夫斯基距离2.2 相关系数2.3 夹角余弦 3 类或簇3.1 类的特征 4 类与类之间的距离…

Azure pipeline 通过git命令修改文件

步骤及解释 设置git用户名 git config --global user.email "useremail" git config --global user.name "username" 获取branch $branch "$(Build.SourceBranch)" -replace "refs/heads/" "$(Build.SourceBranch)"&a…

Ubuntu 系统端口查询与管理详细分析

目录 前言1. 查询端口占用情况2. 释放占用的端口3. 修改应用程序的端口 前言 Window的端口被占用&#xff0c;类似的知识点&#xff1a;重装mysql时3306端口被占用解决方法 事情起因是宝塔的CPU负载过大&#xff0c;重启服务进程之后还是爆&#xff0c;后续发现是端口被占用&…

go 集成swagger 在线接口文档

安装swaggo go install github.com/swaggo/swag/cmd/swaglatest 编写swag import ("github.com/gin-gonic/gin""goWeb/internal/service""goWeb/model/response" )// UserRouter 路由 func UserRouter(ctx *gin.RouterGroup) {ctx.GET("/…

蓝桥杯每日真题 - 第15天

题目&#xff1a;&#xff08;钟表&#xff09; 题目描述&#xff08;13届 C&C B组B题&#xff09; 解题思路&#xff1a; 理解钟表指针的运动&#xff1a; 秒针每分钟转一圈&#xff0c;即每秒转6度。 分针每小时转一圈&#xff0c;即每分钟转6度。 时针每12小时转一圈…

Redis性能优化——针对实习面试

目录 Redis性能优化什么是bigkey&#xff1f;bigkey的危害&#xff1f;如何处理bigkey?什么是hotkey&#xff1f;hotkey的危害&#xff1f;如何处理hotkey&#xff1f;如何处理大量key集中过期问题&#xff1f;什么是内存碎片&#xff1f;为什么会有Redis内存碎片&#xff1f;…

小白进!QMK 键盘新手入门指南

经常玩键盘的伙伴应该都知道&#xff0c;现在的键盘市场可谓是百花齐放&#xff0c;已经不是之前的单一功能产品化时代。我们可以看到很多诸如&#xff1a;机械轴键盘、磁轴键盘、光轴键盘、电感轴键盘&#xff0c;以及可能会上市的光磁轴键盘&#xff0c;更有支持屏幕的、带旋…