首页 > 其他分享 >vue(vue.js) —条件渲染(v-if、v-show)

vue(vue.js) —条件渲染(v-if、v-show)

时间:2024-10-14 20:13:10浏览次数:9  
标签:vue 第一个 show js 第二个 div data

原文链接:vue(vue.js) —条件渲染(v-if、v-show) – 每天进步一点点 (longkui.site)

1.v-show

v-show是控制元素隐藏与删除的语句,基础用法如下:

<div v-show='true'>我是第一个div</div>
<div v-show='false'>我是第二个div</div>

效果如下:

可以看出,v-show=’false’ 在实际渲染中变成了display:none。

当然v-show接受的是个表达式:

下面这样是同一个效果:

  <div v-show="1==1">我是第一个div</div>  //显示
  <div v-show='1==2'>我是第二个div</div>  // 不显示

v-show可以接受一个data里面的值,比如下面这样:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue测试</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    
</head>
<body>
    <div id="root">
       <!-- div -->
       <!--  -->
        <div v-show="a">我是第一个div</div>  //显示
        <div v-show='!a'>我是第二个div</div>  //不显示
    </div>

    <script type="text/javascript">
        new Vue({
            el: '#root',
            data:{
                a:true
            },
            
        })
    </script>
</body>
</html>

也可以用data里面的值来做比较,比如下面这样:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue测试</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    
</head>
<body>
    <div id="root">
       <!-- div -->
       <!--  -->
        <div v-show="name=='alex'">我是第一个div</div>  
        <div v-show="name=='tom'">我是第二个div</div>
    </div>

    <script type="text/javascript">
        new Vue({
            el: '#root',
            data:{
                name:'alex'
            },
            
        })
    </script>
</body>
</html>
2.v-if

上面的代码如果用v-if

 <div v-if="true">我是第一个div</div>  
 <div v-if="false">我是第二个div</div>

可以看出,v-if和v-show最大的区别是v-if如果表达式的值为false,那么会直接删dom节点,而v-show只是隐藏dom节点。

3.v-if与v-else-if

其实这个很好理解,看下面代码

  <div v-if="a==1">我是第一个div</div>  
  <div v-if="a==2">我是第二个div</div>
  <div v-if="a==3">我是第三个div</div>

这三个if是并列结构,三个if成立与否互相不影响。

如果写成v-if与v-else-if

 <div v-if="a==1">我是第一个div</div>  
 <div v-else-if="a==2">我是第二个div</div>
 <div v-else>我是第三个div</div>

这三个div表示的含义是:
如果a是1,那么显示第一个div。

如果a不是1,那么继续判断a是不是2,如果a是2,则显示第二个div。

如果a既不是1,也不是2,那么显示第三个div。

注意:如果你要使用v-if,v-else 这种结构,那么一定中间不要出现”中断“,比如下面这种写法就是错误的。(可以写成层级关系,不能写成并列关系)

<div v-if="a==1">我是第一个div</div>  
<div>哈哈</div>
 <div v-else-if="a==2">我是第二个div</div>
 <div v-else>我是第三个div</div>

出现了中断的情况,那么v-if与后面的代码就没有作用了。

标签:vue,第一个,show,js,第二个,div,data
From: https://www.cnblogs.com/longkui-site/p/18464920

相关文章

  • vue(vue-js)—列表渲染(v-for)
    原文链接:vue(vue-js)—列表渲染(v-for)–每天进步一点点(longkui.site)列表渲染是前端经常用到的代码,在vue中用v-for做列表渲染。1.基础用法首先我们构造一个json数据,[{"name":"张三1","sex":"男","age":12},{"na......
  • vue(vue.js)—列表过滤
    原文链接:vue(vue.js)—列表过滤–每天进步一点点(longkui.site) 列表过滤可以认为是模糊搜索。实现的下面的这种效果:1.监视属性watch实现参考代码如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatibl......
  • springboot基于java的居家养老通用平台(源码+java+vue+部署文档+讲解等)
    收藏关注不迷路!!......
  • 基于Java使用SpringBoot+Vue框架实现的前后端分离的美食分享平台
    ✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌......
  • nbsaas vue3管理后台框架
    nbsaasvue3管理后台框架一、项目概述NbsaasAdminVue是一个基于Vue.js3.0构建的轻量级后台管理系统,结合了现代前端技术栈的最佳实践,旨在帮助开发者快速构建具有高可扩展性和良好用户体验的后台管理系统。该项目拥有简洁的UI设计,强大的功能模块,支持多种自定义配置,......
  • vue3中的defineProps,defineEmits,defineExpose的使用详解
    defineProps 和 defineEmits 都是只能在 <scriptsetup> 中使用的编译器宏。他们不需要导入,且会随着 <scriptsetup> 的处理过程一同被编译掉。defineProps 接收与 props 选项相同的值,defineEmits 接收与 emits 选项相同的值,它们具备完整的类型推断并且在scriptse......
  • vue3 antvX6的使用源码
    npminstall--save@antv/x6<template><divclass="dashboard-container"><p>选择节点</p><button@click="save">保存</button><divclass="antvBox"><divclass="m......
  • MacOS安装nvm管理NodeJs
    安装nvm%curl-o-https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh|bash安装完成验证%nvm--version0.40.0安装NodeJs%nvminstall14.21.3%nvminstall20查看安装的NodeJs%nvmls->v14.21.3v20.18.0切换NodeJs版本......
  • 基于nodejs+vue基于springboot的高校资源共享平台[开题+源码+程序+论文]计算机毕业设
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和教育改革的不断深入,高校资源共享已成为提升教育质量、促进学术交流的重要途径。然而,传统的高校资源管理模式存在资源分散、利用率......
  • vue3 做个点击拖拽的的按钮
    //视图层<divclass="regularAI"ref="draggableDiv":style="{top:`${position.y}px`,left:`${position.x}px`}"> <span@mousedown="startDrag">{{isDragging?'拖拽中':'点击拖拽'}}</span&......