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.xdnf.cn/news/17885.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

D3开发的基本框架步骤

D3.js 是一个功能强大的数据可视化库&#xff0c;用于在网页上创建复杂的图表和交互式图形。以下是一个基本的 D3.js 开发框架&#xff0c;包括了常见的步骤和代码示例&#xff0c;帮助你快速入门。 基本框架 引入 D3.js 库设置 SVG 容器加载数据创建比例尺绘制图形添加轴添加…

正则表达式完全指南,总结全面通俗易懂

目录 元字符 连接符 限定符 定位符 修饰符&#xff08;标记&#xff09; 运算符优先级 普通字符集及其替换 零宽断言 正向先行断言 负向先行断言 正向后发断言 负向后发断言 正则表达式在线测试: 正则在线测试工具 元字符 字符描述\d 匹配一个数字字符。等价于 …

对象的初步认识

#对象可组织数据&#xff08;如统计数据的表格&#xff09; 下以表格为例 1.设计一个表格:(None为初始值设定&#xff0c;表示无) class a; ##1None ##2None 2.创建一个表格 变量a 3.对对象的属性进行赋值 变量.##1"##" 变量.##2"##" 4.查询对象中…

Linux驱动开发第1步_了解STM32MP157D

了解STM32MP157D有哪些硬件资源&#xff0c;为以后进行Linux驱动开发做准备。 STM32MP157A/D器件基于高性能双核ArmCortex-A7 32位RISC内核&#xff0c;工作频率高达800 MHz。Cortex-A7处理器&#xff1a;每个CPU具有32kbyte L1指令缓存&#xff0c;每个CPU具有32kbyte L1数据…

w039基于Web足球青训俱乐部管理后台系统开发

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0…

windows C#-编写 C# LINQ 查询(上)

介绍性的语言集成查询 (LINQ) 文档中的大多数查询是使用 LINQ 声明性查询语法编写的。 但是在编译代码时&#xff0c;查询语法必须转换为针对 .NET 公共语言运行时 (CLR) 的方法调用。 这些方法调用会调用标准查询运算符(名称为 Where、Select、GroupBy、Join、Max 和 Average …

c++入门->类的定义以及this详细解析

1.对象的定义 可以在内部定义变量还有函数&#xff0c;而其中的public是声明这里面的东西是共有的&#xff0c;可以调用也可以修改&#xff0c;但是private则是声明这里面的东西是私有的不可以被改变的&#xff0c;但是在类里面共有的是可以使用私有的。 在对象中默认都是私有…

SAP- 不写代码创建报表

创建报表 点击报保存&#xff0c;表Z0708创建完成 关联三张数据库底表 点击返回 点击报保存&#xff0c;表Z0708创建完成 创建报表

从PE结构到LoadLibrary

从PE结构到LoadLibrary PE是Windows平台主流可执行文件格式,.exe , .dll, .sys, .com文件都是PE格式 32位的PE文件称为PE32&#xff0c;64位的称为PE32&#xff0c;PE文件格式在winnt.h头中有着详细的定义&#xff0c;PE文件头包含了一个程序在运行时需要的所有信息&#xff…

聚类分析 | MSADBO优化Spectral谱聚类优化算法

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于改进正弦算法引导的蜣螂优化算法(MSADBO)优化Spectral谱聚类&#xff0c;matlab代码&#xff0c;直接运行! 创新独家&#xff0c;先用先发&#xff0c;注释清晰&#xff0c;送MSADBO参考文献!优化参数 优化后的带…

【C++】构造与析构函数

目录&#xff1a; 一、 This指针  &#xff08;一&#xff09;使用方法&#xff1a; 二、类的默认成员函数 三、构造函数  &#xff08;一&#xff09;构造函数的特点 四、析构函数 &#xff08;一&#xff09;析构函数的特点 正文 一、 This指针 在c语言中我们调用函…

2021TCSVT,VDM-DA:面向无源数据域自适应的虚拟域建模

原文标题&#xff1a;VDM-DA: Virtual Domain Modeling for Source Data-free Domain Adaptation 中文标题&#xff1a;VDM-DA&#xff1a;面向无源数据域自适应的虚拟域建模 1、Abstract 领域适应旨在利用标签丰富的领域&#xff08;源领域&#xff09;来帮助标签稀缺领域&…

MySQL数据库1——数据库概论

一.数据库概论 1.数据库 数据库&#xff08;DataBase&#xff0c;DB&#xff09;&#xff1a;是长期存储在计算机内、有组织的、统一管理的相关数据的集合。简单来说&#xff0c;它就是一个存储各种数据的仓库&#xff0c;且存储过程不是随便而是有组织的。 数据库管理系统&am…

英伟达Tensor Core技术架构原理分析

英伟达Tensor Core架构技术原理 英伟达的Tensor Core架构是一种专为加速人工智能、深度学习、高性能计算(HPC)等领域中的矩阵运算和张量运算而设计的硬件单元。自首次在Volta架构中引入以来&#xff0c;Tensor Cores已成为NVIDIA高端GPU的核心特性&#xff0c;并在后续的Turing…

Linux基础5-进程控制1(fork创建子进程,写时拷贝,进程退出)

上篇文章&#xff1a;Linux基础4-进程5&#xff08;程序地址空间详解&#xff09;-CSDN博客 本篇重点&#xff1a;fork&#xff0c;写实拷贝&#xff0c;进程退出 目录 一. fork创建子进程 1.1 fork用法 1.2 fork返回值有两个的理解 二. 进程退出码 2.1 进程退出码 2.2 进…

用python中的tkinter包实现进度条

python中的tkinter包是一种常见的设计程序的GUI界面用的包。本文主要介绍这里面的一个组件&#xff1a;进度条&#xff08;Progressbar&#xff09;。Tkinter Progressbar里面对进度条组件已经做了一定的介绍&#xff0c;但比较抽象。本文以另一种方式介绍这个组件及其常用用法…

20.使用标准差剔除异常值

标准差剔除异常值 1. 方法2. 示例代码2.1 数据读取与清洗2.2 分段读取数据并绘图2.3 解释2.4 outliers2.5 结果展示 我有个记录数据采集后格式是step_rewards.txt 的文档&#xff0c;里面只有一列数据&#xff0c;10*10000行数据&#xff0c;没有表头&#xff0c;分别代表奖励数…

中科蓝讯修改蓝牙名字:【图文讲解】

本文以市面上一款公板公模的畅销产品为例。K12蓝牙音响。 音响用的芯片是&#xff1a;AB5768E MIC用的芯片是&#xff1a;AB5769A 硬件框架图如下&#xff1a; 芯片修改名字&#xff0c;通过下载工具中的配置进行修改。选择蓝牙配置&#xff0c;然后会出现蓝牙名字&#xff…

旅行包发霉怎么处理 除霉及防霉解决方法

近些年听到很多箱包工厂的心声&#xff0c;为什么箱包旅行包每年都会出现长霉请况呢&#xff1f;长霉了&#xff0c;也就是长毛了&#xff0c;长出那些病菌、真菌、细菌等微生物。经ihaoer防霉人士介绍旅行包长霉处理方法如下&#xff1a; 旅行包长霉的因素 一、旅行包储存在阴…

14、交互补充

1、元素的三大系列 1.1、offset系列 1.1.1、offset初相识 使用offset系列相关属性可以动态的得到该元素的位置&#xff08;偏移&#xff09;、大小等 获得元素距离带有定位祖先元素的位置获得元素自身的大小&#xff08;宽度高度&#xff09;注意&#xff1a;返回的数值都不…