目录
单独使用v-if,变量为布尔值。
- "app">
- <h2 v-if="flag1">hello!h2>
- <h2 v-if="flag2">hello!Vue!h2>
-
- <script src="../js/vue.js">script>
- <script>
- var vm = new Vue({
- el:'#app',
- data() {
- return{
- flag1:true,
- flag2:false,
- }
- },
- })
- script>
因为flag2的状态为false的,所以不显示。

v-if、v-else、v-else-if联合使用相当于if、elseif、else,但是在条件比较多的时候建议使用计算属性。
直接用例题展示,能够直观的看出具体用法。
给一个分数,在60分以下输出不及格,在60(包括)到75分输出及格,在75(包括)到90输出良好,在90(包括)分到100分输出优秀。
- "app">
- <div v-if="soces<60">不及格div>
- <div v-else-if="soces>=60 && soces<=75">及格div>
- <div v-else-if="soces>75 && soces<=90">良好div>
- <div v-else>优秀div>
- div>
- <script src="../js/vue.js">script>
- <script>
- var vm = new Vue({
- el: '#app',
- data: {
- soces: 95,
- }
- })
- script>

三、v-if、v-else应用bug
如图所示,在更换数据时里面的内容并没有更改。

-
vue在进行DOM渲染是,处于性能考虑,会复用已经存在的元素,而不是每次都创建新的DOM元素。
-
在上面demo中,Vue内部发现原来的input元素不再使用,所以直接将其映射对应虚拟DOM,用来复用。
-
如果不希望出现类似复用问题,可以给对应的dom元素加上key值,并保证key不同。
- "app">
- <span v-if="user">
- <label for="username">用户账号label>
- <input type="text" id="username" key="username" placeholder="请输入用户名">
- span>
- <span v-else="user">
- <label for="email">用户邮箱label>
- <input type="text" id="email" key="email" placeholder="请输入邮箱">
- span>
- <button @click="user=!user">切换登录方式button>
- div>
- <script src="../js/vue.js">script>
- <script>
- var vm = new Vue({
- el: '#app',
- data() {
- return {
- user: true,
- }
- },
- })
- script>
修改后效果:

四、v-show
v-if 在首次渲染的时候,如果条件为假,什么也不操作,页面当作没有这些元素。当条件为真的时候,开始局部编译,动态的向DOM元素里面添加元素。当条件从真变为假的时候,开始局部编译,卸载这些元素,也就是删除。
v-show 不管条件是真还是假,第一次渲染的时候都会编译出来,也就是标签都会添加到DOM中。之后切换的时候,通过display: none;样式来显示隐藏元素。可以说只是改变css的样式,几乎不会影响什么性能。
-
- .d1 {
- color: red;
- }
-
- <div id="app">
- <div class="d1" v-show="flag">hello Vue!div>
- <div v-show="!flag">hello Vue!div>
- <button @click="handle">变色button>
- div>
- <script src="../js/vue.js">script>
- <script>
- let vm = new Vue({
- el: '#app',
- data: {
- flag: false,
- },
- methods: {
- handle() {
- this.flag = !this.flag
- }
- },
- })
- script>
通过下图可以看到,两个div的display的属性在来换交换。

五、v-for遍历数组
- "app">
-
- <ul>
- <li v-for="item in names" >{{item}}li>
- ul>
-
- <ul>
- <li v-for="(item,index) in names" >{{item+"---"+index}}li>
- ul>
-
- <script src="../js/vue.js">script>
- <script>
- const app = new Vue({
- el:"#app",
- data:{
- names:["zzz","ttt","yyy"]
- }
- })
- script>
一般需要使用索引值。- {{index+":"+item}}
index表示索引,item表示当前遍历的元素。

六、v-for遍历对象
- "app">
-
-
- <ul>
- <li v-for="(item,key) in user" >{{key+"---"+item}}li>
- ul>
-
- <ul>
- <li v-for="(item,key,index) in user" >{{key+"---"+item+"---"+index}}li>
- ul>
-
-
- <script src="../js/vue.js">script>
- <script>
- const app = new Vue({
- el:"#app",
- data:{
- user:{
- name:"zzz",
- height:188,
- age:24
- }
- }
- })
- script>

-
相关阅读:
系列文章之一文纵览【机器学习】(5) 常见评估方法:混淆矩阵、正确率、精确率、召回率、F值、预测概率、ROC曲线和AUC | 均方误差、决定系数、SVR | 超参数的设置 | 模型的过拟合与防止
java基础巩固6
.NET周报 【2月第4期 2023-02-25】
Nginx环境搭建、负载均衡测试
【云原生】k8s-----集群调度
哈希表的介绍和内存布局 [数据结构][Java]
高等代数_证明_不同特征值的特征向量线性无关
QT pyside2 线程嵌套子线程 实现开始运行和停止运行
Fabric.js 禁止元素超出画布
gan, pixel2pixel, cyclegan, srgan图像超分辨率
-
原文地址:https://blog.csdn.net/qq_65715980/article/details/126128342