Vue学习笔记(四)Vue指令

【零基础入门VUE】VueJS - 概述 不会对 DOM 进行更改,而是创建 DOM 的副本,该副本以 JavaScript 数据结构的形式存在。最终的更改会更新到真实的 DOM,用户将看到它的变化。随后,对两个 JavaScript 对象进行比较,并在真实 DOM 中更新最终的更改。Ember 添加了 glimmer 渲染引擎,旨在提高重新渲染性能,这与使用虚拟 DOM 的 VueJS 和 React 是类似的概念。随着时间的推移,淘汰赛的发展速度已经放缓。VueJS 继承了 Angular 和 React 的优点,并构建了一个强大的库。 阅读详情

Vue中的指令是指带有v-前缀的特殊属性,Vue中通过指令实现一系列功能

条件渲染


通过使用和条件渲染相关的指令,可以控制元素是否渲染到页面上

v-if

v-if指令后值为true时显示(会隐式转为true的值也一样),为false时不显示,下面这段代码中,最后页面只有span1

<div id="app">
    <span v-if="flag">span1</span>
    <span v-if="!flag">span2</span>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            flag: true
        }
    });
</script>

如果要让v-if控制多个标签,可以使用template标签将这些标签包裹起来,且最后渲染的时候不会出现template标签

<div id="app">
    <template v-if="flag">
        <span>span1</span>
        <span>span2</span>
    </template>
    <template v-if="!flag">
        <span>span3</span>
        <span>span4</span>
    </template>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            flag: true
        }
    });
</script>

最后渲染得到的结果为

<div id="app">
    <span>span1</span> 
    <span>span2</span> 
    <!---->
</div>

v-show

v-show的用法与v-if类似,取决于后面的值是true还是false,下面的代码在页面渲染后还是只有span1

<div id="app">
    <span v-show="flag">span1</span>
    <span v-show="!flag">span2</span>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            flag: true
        }
    });
</script>

v-if  VS  v-show

v-if和v-show都能使元素“消失”,但两者还是有所不同的,使用v-if时,若其后值为false,则在渲染时不会渲染该标签;而使用v-show时,若其后值为false,只是将该标签的display设置为none。

<div id="app">
    <span v-if="!flag">span1</span>
    <span v-show="!flag">span2</span>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            flag: true
        }
    });
</script>

上面的代码在页面中会渲染为

<div id="app">
    <!----> 
    <span style="display: none;">span2</span>
</div>

可以看到,使用v-if的span标签不见了,而使用v-show的标签设置了display为none

一般来说,v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗,如果页面不经常更新的话,可以使用v-if,如果经常更新的话,使用v-show会更合理

除此之外,v-show无法使用template来包裹多个标签

v-else

v-else对应于v-if使用,用于实现两个标签一个显示一个隐藏的情况

<div id="app">
    <span v-if="flag">span1</span>
    <span v-else>span2</span>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            flag: true
        }
    });
</script>

最后页面只显示span1

列表渲染


使用列表渲染可以直接渲染一组值,在Vue中使用v-for来实现,需要以item in items 的语法来实现,其中item是具体值成员,items是值所在的列表

数组内容渲染

使用v-for可以直接对一个数组内的值进行渲染

<div id="app">
    <li v-for="item in list">{{item}}</li>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            list: [1, 2, 3, 4]
        }
    });
</script>

渲染后的页面为

<div id="app">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</div>

对象属性渲染

对对象进行渲染时,渲染的内容是对象的属性值

<div id="app">
    <li v-for="item in obj">{{item}}</li>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            obj: {
                id: 1,
                name: '小明',
                age: 18
            }
        }
    });
</script>

渲染后的页面为

<div id="app">
    <li>1</li>
    <li>小明</li>
    <li>18</li>
</div>

如果要遍历键名的话,需要添加多一个值

<div id="app">
    <li v-for="(val,key) in obj">{{key}}:{{val}}</li>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            obj: {
                id: 1,
                name: '小明',
                age: 18
            }
        }
    });
</script>

渲染后的页面为

<div id="app">
    <li>id:1</li>
    <li>name:小明</li>
    <li>age:18</li>
</div>

整数迭代渲染

v-for也可以对一个整数进行迭代渲染,即从1到该整数

<div id="app">
    <li v-for="item in 4">{{item}}</li>
</div>

渲染后的页面为

<div id="app">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</div>

表单控件绑定


表单空间绑定通过v-model来实现,它可以根据控件类型来选取正确的方法更新数据。v-model只能在表单控件中使用。

文本

<div id="app">
    <input type="text" v-model="msg">
    <!-- <textarea v-model="msg"></textarea> -->
    <p>{{msg}}</p>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            msg: ""
        }
    });
</script>

这里在文本框输入内容时,msg会跟着进行更新,多行文本框也是一样的。

单选按钮

选择单选按钮时,会将该按钮的value值赋给v-model绑定的属性。

<div id="app">
    <input type="radio" value="first" v-model="radio">
    <label>first</label>
    <input type="radio" value="second" v-model="radio">
    <label>second</label>
    <br>
    <span>Checked names: {{ radio }}</span>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            radio: ""
        }
    });
</script>

复选框

对于单个复选框,复选框选中时值为true,没有选中时值为false

<div id="app">
    <input type="checkbox" v-model="checked">
    <label for="checkbox">{{ checked }}</label>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            checked: false
        }
    });
</script>

当选中复选框时,checked会变为true,当再点取消选中时,checked就会变成false。

当有多个复选框时,点击复选框会把该复选框的value加入到v-model绑定的数组里。

<div id="app">
    <input type="checkbox" value="Jack" v-model="checkedNames">
    <label>Jack</label>
    <input type="checkbox" value="John" v-model="checkedNames">
    <label>John</label>
    <input type="checkbox" value="Mike" v-model="checkedNames">
    <label>Mike</label>
    <br>
    <span>Checked names: {{ checkedNames }}</span>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            checkedNames: []
        }
    });
</script>

这里要注意的是,如果checkedNames不是数组,而是一个值的话,在选中复选框时该值会变成true。checkedNames可以是一个非空的数组。

单选列表

单选列表会将选中的option值传给v-model绑定的值

<div id="app">
    <select v-model="select">
    <option>1</option>
    <option>2</option>
    <option>3</option>
</select>
    <p>{{select}}</p>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            select: ""
        }
    });
</script>

多选列表

单选列表会将选中的option值加入到v-model绑定的数组

<div id="app">
    <select v-model="select" multiple>
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
    <p>{{select}}</p>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            select: []
        }
    });
</script>

修饰符

lazy

默认情况下,v-model在input中是与输入同步的,而使用了lazy修饰符后会与change同步,即在输入时不会随着输入改变,而焦点离开该input后如果值改变,则会跟着改变

<div id="app">
    <input type="text" v-model.lazy="msg">
    <p>{{msg}}</p>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            msg: ""
        }
    });
</script>

number

number修饰符会将用户的输入值转为number类型,如果原值转换类型为NaN则变回原值

<div id="app">
    <input type="text" v-model.number="msg">
    <p>{{msg}}</p>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            msg: ""
        }
    });
</script>

trim

trim会过滤输入框内容的首尾空格

<div id="app">
    <input type="text" v-model.trim="msg">
    <p>{{msg}}</p>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            msg: ""
        }
    });
</script>

VUEJS项目实践四之自定义键盘指令(按键即获取焦点) 上回书说到怎么在vue.js中添加bootstrap样式,这次来写一下键盘按键指令吧~ 一、先来说一下vue.js本来就有的按键指令吧~ 这个就灰常的简单和方便啦~ 1、随便找一个vue页面文件,在<template>标签里写一个测试用的输入框 <div> <input type="text" @keyup.13="showDialog()"> <... 阅读详情

相关推荐

诠视MR眼镜Unity开发设置_Unity2020.3.38

请按照如下设置Android SDK 和 Gradle。打包前先将Unity切换到Android模式。Preferences 设置。

m0_71932574的博客 603

if判断中的隐式转换

if判断中的隐式转换 ​ const judgeTrueOrFalse = (a) => { ​ if (a) { ​ console.log("true"); ​ } else { ​ console.log("false"); ​ } ​ }; ​ judgeTrueOrFalse({}); // true ​ judgeTrueOrFalse([]); // tru

weixin_小白鼠的博客 514

PLSQL Developer新手必看:如何避免安装过程中的常见坑

本文为PL/SQL Developer新手提供了详尽的安装与配置避坑指南。从版本选择、注册码使用、汉化包安装到Oracle客户端连接配置,逐一解析常见问题并提供解决方案,帮助开发者快速搭建稳定的PL/SQL开发环境,顺利开启Oracle数据库编程工作。

g9h0i1的博客 654

3.Vue的常用指令之v-if与v-show

1.指令 directive vue指令的作用是通过带有v-的特殊属性,实现对dom的响应式加载 2.v-if v-if的作用是通过一个布尔表达式对dom的上树与下树的渲染 基本使用: <p v-if="false">我是第一行dom元素</p> <p v-if="true">我是第二行dom元素</p> 但是通常工作中不是使用布尔值直接进行渲染的,而是通过data带有布尔值的表达式进行判断。 <body> <div id="app

qq_42392049的博客 382

视觉SLAM的前段后端最详细的梳理(硕士入门知识框架更新)

文章目录视觉SLAM的组成结构视觉里程计(VO)-特征点法 -构建稀疏点云地图-直接法 -构建稠密或半稠密的地图 --需要使用 RGB-D 传感器视觉里程计--总结:SLAM 后端研究滤波器法非线性优化后端方式的差异(有五种优化方式):单目视觉里程计的初始化:运动估计:半直接法运动估计的优化方案:关于解决累计误差的一些方法:关键帧的建图及后端优化:特征的深度估计:图优化的后端研究:视觉与IMU融合的分类:视觉与IMU的融合的优势:存在的问题:优秀的开源: 视觉SLAM的组成结构 视觉里程计(VO) -特

DC 6812

Excel COUNTIF函数精确统计全解析:从模糊匹配到精准计数

在数据处理与办公自动化领域,条件计数是数据分析的基础操作,其核心原理在于对特定范围内满足设定条件的单元格进行识别与汇总。Excel中的COUNTIF函数是实现这一功能的常用工具,它通过文本匹配逻辑与通配符机制来执行条件判断。然而,其默认的模糊匹配行为常导致统计结果偏离预期,这正是精确统计的技术价值所在——确保数据汇总的准确性与可靠性,直接影响业务报告、薪酬核算、销售分析等应用场景的决策质量。本文聚焦COUNTIF函数的精确匹配技巧,深入剖析通配符(如星号*和问号?)的转义使用(通过波浪号~),并针对大小写敏

weixin_29040367的博客 358

vue v-if指令

指令 指令的英文:directive,vue指令的作用是通过带有v-的特殊属性,实现对dom的响应式加载 v-if v-if的作用是通过一个布尔表达式进行对dom的上树和下树的渲染 基本使用: <p v-if="false">我是第一行dom元素</p> <p v-if="true">我是第二行dom元素</p> 我们工作中不是使用布尔值直接进行渲染,而是通过data带有布尔值的进行渲染 <body> <div id="app"&

学亮编程手记 1904

第95章 安全工程师:Shell 脚本实现安全扫描、漏洞检测、日志审计

随着网络安全威胁日益复杂,传统的手动安全管理已无法满足现代企业的安全需求。Shell 脚本为安全工程师提供了强大的自动化能力,能够实现 7×24 小时的安全监控、快速漏洞扫描、智能日志分析和实时威胁响应。本章将系统介绍如何使用 Shell 脚本构建完整的安全防护体系,从基线检查到实时监控,帮助你打造自动化的安全运维能力。

猪猪侠 91

vue多选框选择后显示选中的内容

页面代码<div class="demo"> <<input type="checkbox" id="jack" value="Jack" v-model="checkedNames"> <label for="jack">Jack</label> <input type="checkbox" id="john" val...

weixin_30480651的博客 2916

你的小程序地图功能还只是“摆设”吗?支付宝地图API的深度玩法都在这里了!

🏆本文收录于《滚雪球学支付宝小程序开发》专栏,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1823

ARINC429协议分析

如下表所示,ARINC429在发送一帧过程中,首先发送以START开始,以END结束,共发送32bits数据,其中0~7bits为Lable数据,9~8bits为SDI数据,10~28bits为数据,29~30bits为SSM,31bit为校验位End30292827262524校验位SSM2322212019181716DATA15141312111098SDI7654321Start。

5223

学习笔记Vue(四)—— 自定义指令directive

vue中可以通过directive创建自定义的指令, 可全局定义,也可局部: const vm = new Vue({ el:"#app", data: { a: 10, money: 1000000 }, directives:{ //...

qq_38932377的博客 420

用 CDS 作为 Referenced Data Source 开发 SAP Gateway OData 服务,一条更轻的 SEGW 路线

本文介绍了SAP Gateway项目中从传统手工建模到基于CDS View的现代化开发方式转变。主要内容包括: 传统方式需要在SEGW中手动创建Entity Type、Entity Set等元素,并在DPC_EXT中编写大量查询逻辑,存在模型层和业务逻辑重复表达的问题。 7.50版本后,SAP Gateway与ABAP CDS深度集成,可通过SEGW直接引用CDS View作为数据源,自动生成数据模型和SADL读取逻辑,支持完整的OData查询功能。 最佳实践建议通过Consumption View而非直接

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 707

Vue学习笔记(四、v-bind指令)

Vue学习笔记(四、v-bind指令)

ttod的博客 437

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

vue学习笔记 | 四、vue中的插值操作及指令使用

插值操作: mustache语法 也就是双大括号{{}} mustache语法中,不仅仅可以直接写变量,也可以写简单的表达式 例如{{a}} {{a+b}} v-once指令 该指令后面不需要跟任何表达式 该指令表示元素和组件只渲染一次,不会随着数据的改变而改变 v-html指令 某些情况下,我们从服务器请求到的数据本身就是一个html代码 如果我们直接通过{{}}来输出,会将html代码也一起输出 如果我们希望解析出html展示

唐家小妹的博客 222

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Vue.js 2.0 学习笔记(四)动态组件&插槽&自定义指令

Vue.js 2.0 学习笔记(四)动态组件&插槽&自定义指令 文章目录Vue.js 2.0 学习笔记(四)动态组件&插槽&自定义指令一、动态组件1.1 实现动态组件的渲染1.2 keep-alive的使用1.2.1 keep-alive 对应的生命周期函数1.2.2 keep-alive的 include 和 exclude 属性1.3 组件注册名称和组件声明时name的区别二、插槽slot1.1 slot 的概念1.2 插槽使用的例子——移动网站中的导航栏1.3 插槽的基

MARTIAN的博客 521

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

ranran0306的博客 9740

Vue开发工具vuejs-devtools超级详细安装教程以及常见问题解决

这绝对是最详细的Vue开发工具vuejs-devtools安装教程,相信你只需要5分钟即可解决所有问题 所需的所有文件,链接:https://pan.baidu.com/s/19GWDS_7GodIdFBUO0eTDAg 提取码:2yvc 一、vue.js插件下载 下载地址:vue.js插件下载; 点击进入Vue官网即可下载,共有两种版本的插件(开发版本:vue.js,生产版本:vue.main.js),建议使用开发版本。开发版本有更多的错误信息提示和调试,文件较大,生产办文件小但是很多提示不全,解决开发

goog_man的博客 6万+

vuejs指令csdn_VueJS的长按指令库

vuejs指令csdn 长时间点击 (vue-long-click) Vue long click (longpress) directive. Vue长按(longpress)指令。 View Demo 查看演示 Download Source 下载源 安装 (Install) npm install vue-long-click --save import { longClickDir...

cuk5340的博客 392

【Vue学习笔记】黑马程序员四小时速成VUE

Vue学习 Vue基础 Vue简介 JavaScript框架 简化Dom操作 响应式数据驱动 Vue官方文档: https://cn.vuejs.org https://v3.cn.vuejs.org/ *Demo1 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="I

DingDong的博客 4259

VueJS 之自定义指令

VueJS 允许你注册自定义指令,以便封装对 DOM 元素的重复处理行为,提高代码的复用率。VueJS 中的自定义指令分为两类,即全局自定义指令及私有自定义指令。其中,私有自定义指令仅允许当前组件(定义该指令的组件)使用,而全局自定义指令允许当前项目中的任何组件使用。你可以通过终端directives节点来定义私有自定义指令。

两个月亮 992

Vue3/VueJS技术学习笔记

Vue3/VueJS技术学习笔记 1、第一个Vue.js应用程序 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>hello-vue</title> <!--导入Vue.js,开发环境版本,包含了有帮助的命令行警告--> <script src="https://cdn.jsdelivr.net/npm/

microvulome的博客 1434

vuejs 指令

vue学习第一天 vuejs基础语法中的指令: v-cloak在插值表达式的标签上添加v-cloak 指令原理:先通过样式隐藏内容,然后在内存中进行值的替换,替换好之后显示结果执行vue会自动清除该指令 v-text填充文本内容,不能解析html标签 v-html填充html片段 内容数据可以使用,第三方数据不能使用 v-pre不常用,显示原始信息,不进行解析 v-once只编译一次...

weixin_34248849的博客 203

vue和vuejs区别_D3vue-VueJS的D3插件

vue和vuejs区别 D3vue (D3vue) D3 integration with Vue.js. 与Vue.js的D3集成。 View demo 查看演示 Download Source 下载源 d3vue is a plugin for VueJS 2 that allows you to take data from your Vue instance and bind ...

cuk5340的博客 3293

vue模板html,VueJS模板

本篇文章帮大家学习VueJS模板,包含了VueJS模板使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。在前面的章节中我们已经学到了如何在屏幕上以文本内容的形式获得输出。 在本章中将学习如何在屏幕上以HTML模板的形式获取输出。要理解这一点,让我们先看看一个例子,并在浏览器中看到输出。创建一个文件:template.html -VueJs模板名字 : {{name}}城市...

weixin_36371504的博客 927
上一篇: Vue学习笔记(三)Vue事件处理
下一篇: LeetCode 42.接雨水 Java实现
前端小黑
博客等级 码龄9年 148粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值