当前位置: 首页 > news >正文

Vue 的常用指令以及相关修饰符的含义

Vue 的常用指令

插值表达式

{{ }} 用来在 Vue 模板中插入变量。

<div id="app">{{ message }}
</div>
new Vue({el: '#app',data: {message: 'Hello Vue!'}
})

v-text

v-text 指令用来设置元素的文本内容。

<div id="app"><span v-text="message"></span>
</div>
new Vue({el: '#app',data: {message: 'Hello Vue!'}
})

v-html

v-html 指令用来设置元素的 HTML 内容。

<div id="app"><div v-html="html"></div>
</div>
new Vue({el: '#app',data: {html: '<h1>This is a title</h1>'}
})

v-show

v-show 指令用来根据条件展示元素。

<div id="app"><p v-show="show">Hello Vue!</p>
</div>
new Vue({el: '#app',data: {show: true}
})

v-if

v-if 指令用来根据条件控制元素的显示与否。

<div id="app"><p v-if="show">Hello Vue!</p>
</div>
new Vue({el: '#app',data: {show: true}
})

v-if 可以与 v-else 一起使用,用来控制元素的显示与否。
或者 v-else-if 用来设置多个条件。

<div id="app"><p v-if="show">Hello Vue!</p><p v-else-if="age > 18">You are old enough to vote.</p><p v-else>You are not old enough to vote.</p>
</div>
new Vue({el: '#app',data: {show: true,age: 20}
})
v-ifv-show 的区别
  1. v-if 指令会在元素插入或删除时,触发一次 DOM 操作,而 v-show 指令只会在初始渲染时触发一次 DOM 操作。
  2. v-if 指令切换条件时,元素所在的容器元素会被移除或插入到 DOM 中,而 v-show 指令不会触发 DOM 操作。
  3. v-if 指令会有更高的切换开销,因为需要频繁地插入、删除 DOM 元素;v-show 指令初始渲染时,元素的 display 样式会被设置,之后元素的 display 样式会被隐藏或显示,不会触发 DOM 操作。
  4. v-if 指令可以用于条件判断,而 v-show 指令可以用于简单控制元素的显示与否。

v-for

v-for 指令用来遍历数组或对象,并对每个元素进行渲染。

<div id="app"><ul><li v-for="(item, index) in items" :key="index">{{ item }}</li></ul>
</div>
new Vue({el: '#app',data: {items: ['apple', 'banana', 'orange']}
})

v-for 也可以用来遍历数字,并对每个元素进行渲染。

<div id="app"><ul><li v-for="num in 10" :key="num">{{ num }}</li></ul>
</div>
new Vue({el: '#app'
})

v-for 也可以与 v-if 一起使用,用来控制元素的显示与否。

<div id="app"><ul><li v-for="(item, index) in items" :key="index" v-if="index % 2 === 0">{{ item }}</li></ul>
</div>
new Vue({el: '#app',data: {items: ['apple', 'banana', 'orange']}
})

v-on

v-on 指令用来绑定事件。

<div id="app"><button v-on:click="handleClick">Click me</button>
</div>
new Vue({el: '#app',methods: {handleClick: function() {console.log('Button clicked!')}}
})

v-on 也可以绑定按键事件。

<div id="app"><input type="text" v-on:keyup.enter="handleEnter">
</div>
new Vue({el: '#app',methods: {handleEnter: function() {console.log('Enter key pressed!')}}
})

v-bind

v-bind 指令用来绑定属性。

<div id="app"><img v-bind:src="imageUrl">
</div>
new Vue({el: '#app',data: {imageUrl: 'https://cn.vuejs.org/images/logo.png'}
})

v-bind 也可以绑定 class。

<div id="app"><div v-bind:class="{ active: isActive }">Hello Vue!</div>
</div>
new Vue({el: '#app',data: {isActive: true}
})

v-bind 也可以绑定样式。

<div id="app"><div v-bind:style="{ color: activeColor }">Hello Vue!</div>
</div>
new Vue({el: '#app',data: {activeColor: 'blue'}
})

v-model

v-model 指令用来实现表单输入和应用状态之间的双向绑定。

<div id="app"><input type="text" v-model="message"><p>{{ message }}</p>
</div>
new Vue({el: '#app',data: {message: 'Hello Vue!'}
})

v-model 也可以绑定数组。

<div id="app"><input type="text" v-model="items"><ul><li v-for="(item, index) in items" :key="index">{{ item }}</li></ul>
</div>
new Vue({el: '#app',data: {items: ['apple', 'banana', 'orange']}
})

v-model 也可以绑定对象。

<div id="app"><input type="text" v-model="user.name"><p>{{ user.name }}</p>
</div>
new Vue({el: '#app',data: {user: {name: 'John'}}
})
v-model 的解析

其本质是一个语法糖,实际上会被编译成如下代码:

<input type="text" :value="message" @input="message = $event.target.value">

其中 :value 用来绑定应用状态的值,@input 用来监听用户输入并更新应用状态。

指令的修饰符

指令可以带有修饰符,以表示特殊的含义或功能。

.stop

.stop 修饰符用来阻止事件冒泡。

.prevent

.prevent 修饰符用来阻止默认事件。

.capture

.capture 修饰符用来捕获事件。

.self

.self 修饰符用来只响应自身事件。

.once

.once 修饰符用来只触发一次事件。

.native

.native 修饰符用来绑定原生事件。

.sync

.sync 修饰符用来实现双向绑定。

.trim

.trim 修饰符用来自动过滤用户输入的首尾空格。

.number

.number 修饰符用来将用户输入的值自动转为数字类型。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Shell 编程入门
  • WPF中创建横向的ListView
  • 一文理解单点登录与联合登录
  • 数字影像产业基地:绿色、智能、创新,如何并存发展?
  • C++:拷贝构造函数、赋值运算符重载
  • 批量复制指定文件夹——EXCEL VBA 实现
  • 华纳云:修复WordPress内存耗尽错误的常用方法有哪些?
  • FFmpeg安装与使用教程
  • HTML 揭秘:HTML 编码快速入门
  • 企企通:关于项目型采购,如何进行数字化设计方能提质增效?
  • vue基于sockjs-client+stompjs实现websocket客户端
  • 【STM32 Blue Pill编程】-定时器编码模式与旋转编码器
  • 【分治】归并排序
  • 有了 Cursor 后,真没理由说不会写代码了
  • 【面试分享】面试题——网络题目_网络面试题
  • C学习-枚举(九)
  • java8-模拟hadoop
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • springboot_database项目介绍
  • 阿里云前端周刊 - 第 26 期
  • 给第三方使用接口的 URL 签名实现
  • 前端性能优化——回流与重绘
  • 使用Swoole加速Laravel(正式环境中)
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #1015 : KMP算法
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1)(1.13) SiK无线电高级配置(五)
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (一)80c52学习之旅-起始篇
  • .Mobi域名介绍
  • .NET CLR Hosting 简介
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • /dev/sda2 is mounted; will not make a filesystem here!
  • [].slice.call()将类数组转化为真正的数组
  • [Android]创建TabBar
  • [autojs]autojs开关按钮的简单使用
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [BetterExplained]书写是为了更好的思考(转载)
  • [Flexbox] Using order to rearrange flexbox children
  • [Git][认识Git]详细讲解
  • [ios] IOS文件操作的两种方式:NSFileManager操作和流操作【转】
  • [Labview] 表格改值后单元格编辑功能,更改颜色、字体、颜色等