三,vue的基础语法之条件判断

vue的条件指令和JavaScript的条件语句类似。vue的条件指令可以根据表达式的值在DOM中渲染或者销毁元素或者组件

v-if

  • v-if的原理
    • v-if后面的条件为false时,对应的元素以及其子元素不会渲染。
    • 也就是根本没有不会有对应的标签出现在DOM中
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <h3 v-if="isShow">
        <div>xiaojian1</div>
        <div>xiaojian2</div>
        <div>xiaojian3</div>
    </h3>
    {{message}}
</div>

<script src="../js/vue.js"></script>
<script type="text/javascript">
    var app= new Vue({
            el: "#app",
            data: {
                message: "hello vue",
                isShow: false
            }
        })
</script>

</body>
</html>

v-if、v-else-if、v-else结合使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<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 type="text/javascript">
    var app= new Vue({
            el: "#app",
            data: {
                score: 99
            },
            computed:{
               result(){
                  var showMessage= '';
                  if(this.score>=90){
                      showMessage='优秀'
                  }else if (this.score>=80){
                      showMessage='良好'
                  }else if (this.score>=60){
                      showMessage='及格'
                  } else{
                      showMessage='不及格'
                  }
                  return showMessage
               }
            }
        })
</script>

</body>
</html>

综合案例

  • 用户再登录时,可以切换使用用户账号登录还是邮箱地址登录
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <span v-if="isUser">
        <label for="userName">用户账号</label>
        <input id="userName" type="text" placeholder="用户账号">
    </span>
    <sapn v-else>
        <label for="email">用户邮箱</label>
        <input type="text" id="email" placeholder="email">
    </sapn>
    <button @click="btnClick">切换</button>
</div>

<script src="../js/vue.js"></script>
<script type="text/javascript">
    var app= new Vue({
            el: "#app",
            data: {
               isUser: true
            },
        methods:{
            btnClick(){
                this.isUser = !this.isUser

            }
        }
        })
</script>

</body>
</html>

v-show

  • v-show的用法和v-if非常相似,也用于决定一个元素是否渲染
  • v-if和v-show对比
    • v-if当条件为false时,压根不会有对应的元素在DOM中
    • v-show当条件为false时,仅仅是将元素的display属性设置为none而已
  • 当需要在显示与隐藏之间切片很频繁时,使用v-show
  • 当只有一次切换时,通过使用v-if
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

<div id="app">
  <!--v-if: 当条件为false时, 包含v-if指令的元素, 根本就不会存在dom中-->
  <h2 v-if="isShow" id="aaa">{{message}}</h2>

  <!--v-show: 当条件为false时, v-show只是给我们的元素添加一个行内样式: display: none-->
  <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: false
    }
  })
</script>

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值