• Vue条件判断及循环遍历(v-if、v-elseif、v-else、v-show、v-for)


    目录

    一、v-if

     二、v-if、v-elseif、v-else

    三、v-if、v-else应用bug

    四、v-show 

     五、v-for遍历数组

     六、v-for遍历对象


    一、v-if

    单独使用v-if,变量为布尔值。

    1. "app">
    2. <h2 v-if="flag1">hello!h2>
    3. <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-elseif、v-else

    v-if、v-else、v-else-if联合使用相当于if、elseif、else,但是在条件比较多的时候建议使用计算属性。

    直接用例题展示,能够直观的看出具体用法。

    给一个分数,在60分以下输出不及格,在60(包括)到75分输出及格,在75(包括)到90输出良好,在90(包括)分到100分输出优秀。

    1. "app">
    2. <div v-if="soces<60">不及格div>
    3. <div v-else-if="soces>=60 && soces<=75">及格div>
    4. <div v-else-if="soces>75 && soces<=90">良好div>
    5. <div v-else>优秀div>
    6. div>
    7. <script src="../js/vue.js">script>
    8. <script>
    9. var vm = new Vue({
    10. el: '#app',
    11. data: {
    12. soces: 95,
    13. }
    14. })
    15. script>

    三、v-if、v-else应用bug

    如图所示,在更换数据时里面的内容并没有更改。

     

    1. vue在进行DOM渲染是,处于性能考虑,会复用已经存在的元素,而不是每次都创建新的DOM元素。

    2. 在上面demo中,Vue内部发现原来的input元素不再使用,所以直接将其映射对应虚拟DOM,用来复用。

    3. 如果不希望出现类似复用问题,可以给对应的dom元素加上key值,并保证key不同。

    1. "app">
    2. <span v-if="user">
    3. <label for="username">用户账号label>
    4. <input type="text" id="username" key="username" placeholder="请输入用户名">
    5. span>
    6. <span v-else="user">
    7. <label for="email">用户邮箱label>
    8. <input type="text" id="email" key="email" placeholder="请输入邮箱">
    9. span>
    10. <button @click="user=!user">切换登录方式button>
    11. div>
    12. <script src="../js/vue.js">script>
    13. <script>
    14. var vm = new Vue({
    15. el: '#app',
    16. data() {
    17. return {
    18. user: true,
    19. }
    20. },
    21. })
    22. script>

    修改后效果:

    四、v-show 

    ​ v-if 在首次渲染的时候,如果条件为假,什么也不操作,页面当作没有这些元素。当条件为真的时候,开始局部编译,动态的向DOM元素里面添加元素。当条件从真变为假的时候,开始局部编译,卸载这些元素,也就是删除。

    ​ v-show 不管条件是真还是假,第一次渲染的时候都会编译出来,也就是标签都会添加到DOM中。之后切换的时候,通过display: none;样式来显示隐藏元素。可以说只是改变css的样式,几乎不会影响什么性能。

    1. <div id="app">
    2. <div class="d1" v-show="flag">hello Vue!div>
    3. <div v-show="!flag">hello Vue!div>
    4. <button @click="handle">变色button>
    5. div>
    6. <script src="../js/vue.js">script>
    7. <script>
    8. let vm = new Vue({
    9. el: '#app',
    10. data: {
    11. flag: false,
    12. },
    13. methods: {
    14. handle() {
    15. this.flag = !this.flag
    16. }
    17. },
    18. })
    19. script>

    通过下图可以看到,两个div的display的属性在来换交换。

     五、v-for遍历数组

    1. "app">
    2. <ul>
    3. <li v-for="item in names" >{{item}}li>
    4. ul>
    5. <ul>
    6. <li v-for="(item,index) in names" >{{item+"---"+index}}li>
    7. 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遍历对象

    1. "app">
    2. <ul>
    3. <li v-for="(item,key) in user" >{{key+"---"+item}}li>
    4. ul>
    5. <ul>
    6. <li v-for="(item,key,index) in user" >{{key+"---"+item+"---"+index}}li>
    7. 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