Vue的条件判断

news/2024/7/10 0:24:44 标签: vue

1、Vue的条件判断

1.vue的条件判断:
    v-if、v-else-if、v-else,这三个指令与JS的条件语句if、else、else if类似。
    Vue的条件指令可以根据表达式的值在DOM中渲染或销毁元素或组件。
2.指令v-if
   :可以用v-if指令的条件(判断)值来决定DOM的元素是否渲染出来;
3.使用方法:
    v-if="表达式"
<div id="app">
    <!-- 条件为true时,将message渲染出来,条件为false时,不渲染出来 -->
	<h2 v-if="true">{{message}}</h2>
	<h2 v-if="false">{{message}}</h2>
	<!-- 用data中的自定义数据show作为条件,则可以动态修改条件 -->
	<h2 v-if="isShow">{{message}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
    el: "#app",
    data: {
        message: '你好啊!',
        isShow: true
    }
})
</script>

2.v-if和v-else的结合使用

 v-if   :当表达式条件满足时,显示该指令元素里面的内容;
 v-else : 否则表达式条件不满足,显示该指令元素里面的内容;
 注意:v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别。
<div id="app">
	<h2 v-if="isShow">{{message}}</h2>
	<h1 v-else>isShow为false时显示我</h1>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
    el: "#app",
    data: {
        message: '你好啊!',
        isShow: true
    }
})
</script>

3.v-if、v-else和v-else-if的结合使用

v-if      :条件满足,显示该元素里面的内容。
v-else-if :若v-if中条件不满足,则看v-else-if中条件是否满足,满足则显示该元素里面的内容。
            类似于 v-else,v-else-if 也必须紧跟在带 v-if 或者 v-else-if 的元素之后。
v-else    :若都不满足,则改元素中内容。
<div id="app">
	<h2 v-if="score>=90">优秀</h2>
	<h2 v-else-if="score>=80">良好</h2>
	<h2 v-else-if="score>=60">及格</h2>
	<h2 v-else>不及格</h2>
	
	 <!-- 	逻辑较多时,可以直接用计算属性来做 -->
	<h1>{{result}}</h1>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
	el: "#app",
	data: {
	    score: 99
	},
	computed: {
	    result() {
	        let showMessage = ''
	        if (this.score >= 90) {
	            showMessage = '优秀'
	        } else if (this.score >= 80) {
	            showMessage = '良好'
	        } else if (this.score >= 60) {
	            showMessage = '及格'
	        } else {
	            showMessage = '不及格'
	        }
	        return showMessage
	   }
	}
})
</script>

4.用户登录切换的小案例

<div id="app">
	<span v-if="isUser">
		<label for="username">用户账号</label>
		<input type="text" id="username" placeholder="用户账号" key="username">
	</span>
	<span v-else>
		<label for="email">用户邮箱</label>
		<input type="text" id="email" placeholder="用户邮箱" key="email">
	</span>
	<button @click="isUser=!isUser">切换类型</button>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
	el: "#app",
	data: {
	    isUser: true
	}
})
</script>
问题:如果我们在有输入内容的情况下切换了类型,我们会发现文字依然显示之前的输入的内容。
      但是按道理讲,我们应该切换到另外一个input元素中了,
      在另一个input元素中,我们并没有输入内容。
 
为什么会出现这个问题呢?
     这是因为Vue在进行DOM渲染时,出于性能考虑,会会尽可能高效地渲染元素,
     通常会复用已有元素而不是从头开始渲染
     也就是说: Vue内部会发现原来的input元素不再使用,直接作为else中的input来使用了
     
解决方案:
    如果我们不希望Vue出现类似重复利用的问题,就要通过方式来表达这两个元素是完全独立的,
    不要复用它们可以给对应的input添加key属性
    并且我们需要保证不同input中key属性的属性值不同,这样就不会被复用,而是重新创建。

5、v-show的使用

1.v-show的使用:
     v-show的用法和v-if非常相似,都是决定一个元素是否渲染:

2.v-if和v-show对比
   *当条件为true时:
      v-if和v-show都可以将元素渲染,显示出来。
   *当条件为false时:
      v-if不会显示元素,原因:包含v-if指令的元素根本不会存在DOM中
      v-show不会显示元素,原因:因为它给该元素设置了一个行内样式 display:none
                               但它始终会被渲染并保留在 DOM 中
    v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
    它也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。
    v-show 就简单得多,不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

3.开发中选择用v-show还是v-if?
    当需要在显示与隐藏之间切换很频繁时,使用v-show
    当只有一次切换时,使用v-if
 <div id="app">
	<h2 v-if="isShow" id="aaa">{{message}}</h2>
	<h2 v-show="isShow" id="bbb">{{message}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
    const app = new Vue({
        el: "#app",
        data: {
            message: '你好啊!',
            isShow: true
        }
    })
</script>

http://www.niftyadmin.cn/n/1556598.html

相关文章

SequoiaDB巨杉数据库携手民生银行分布式数据管理平台

日前&#xff0c;SequoiaDB巨杉数据库成功中选民生银行新一期“年度生产运营商业软件许可和服务采购”项目&#xff0c;再次携手推进分布式数据库管理平台建设。自从2014年正式和民生银行建立合作&#xff0c;巨杉数据库至今已经管理超过2PB的数据&#xff0c;节点数超过130台物…

JavaScript原型与原型链

一、普通对象与函数对象 在JavaScript的世界里&#xff0c;万物皆对象。对象分为普通对象和函数对象 function f1() { }; var f2 function () { }; var f3 new Function();var o1 {}; var o2 new Object(); var o3 new f1(); // 等同于下面的o4 var o4 new new Functio…

openpyxl

写入 from openpyxl import Workbookwb Workbook()wb1 wb.create_sheet(index, 0)wb1[D2] alsidhfwb1.cell(4,2,11111111111)wb1[A1] 4wb1[A2] 3wb1[A3] sum(A1:A2)wb1.append([])wb1.append([])wb1.append([])wb1.append([])wb1.append([])wb1.append([1,2,3,4,5,6,7,8,…

元素水平垂直居中的方法总结

1、元素水平居中 当然最好使的是&#xff1a; margin: 0 auto;2、元素水平垂直居中 方案1&#xff1a;position 元素有宽高而且要知道具体宽高 父元素设置为&#xff1a;position: relative; 子元素设置为&#xff1a;position: absolute; 距上50%&#xff0c;距左50%&#…

简单的聊聊网络请求中的内存拷贝

序 掘金是自己刚发现不久的平台&#xff0c;原本一些学习笔记都是记录在有道&#xff0c;因为正好两边都支持markdown&#xff0c;现在打算把一些整理后的笔记分享出来。这篇主要来简单的聊聊网络请求中的内存拷贝。 网络请求中数据传输过程图 数据传输类型一&#xff08;read&…

如何给行内元素设置宽高

我们都知道行内元素直接设置宽高是无效的。当我们在面试中遇到这个问题的时候&#xff0c;很容易想到给它设置 display:block或者display:inline-block就可以了&#xff0c;但是面试官来了句“还有其他方法吗&#xff1f;” 1、常用的行内元素 <a> 标签可定义锚 <a…

浅谈重排(回流)与重绘

1、浏览器的渲染机制 浏览器渲染展示网页的过程&#xff0c;大致分为以下几个步骤&#xff1a; 1.解析HTML(HTML Parser) 2.构建DOM树(DOM Tree) 3.渲染树构建(Render Tree) 4.绘制渲染树(Painting)也就是说浏览器下载完页面所有的资源后&#xff0c;就要开始构建DOM树&#…

【小学数学论文】浅析小学学生数学计算能力的培养

浅析小学学生数学计算能力的培养 [导读] 本文是小学数学优秀论文范文2000字至3000字完整版《新课程标准》提出了关于“使学生能够正确地进行整数、小数、分数的四则计算&#xff0c;对其中一些基本的计算&#xff0c;要达到一定的熟练程度&#xff0c;并逐步做到计算方法合理、…