zoukankan      html  css  js  c++  java
  • Vue条件渲染(v-if)

    因为 v-if 是一个指令,所以必须将它添加到一个元素上。

    在 <template> 元素上使用 v-if 条件渲染分组, <template> 元素当做不可见的包裹元素,并在上面使用 v-if。最终的渲染结果将不包含 <template> 元素。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>v-if 指令</title>
            <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js" type="text/javascript" charset="utf-8"></script>
        </head>
        <body>
    
            <div id="app">
                <button v-on:click="open">开始</button>{{number}}
                <div v-if="number > 90">特等奖</div>
                <div v-else-if="number > 80">一等奖</div>
                <div v-else-if="number > 70">二等奖</div>
                <div v-else-if="number > 60">三等奖</div>
                <div v-else-if="number > 50">再来一次</div>
                <div v-else>谢谢参与</div>
            </div>
        </body>
    </html>
    <script>
        var app = new Vue({
            el: "#app",
            data: {
                number: 0
            },
            methods: {
                open: function() {
                    this.number = Math.random() * 100
                }
            }
        })
    </script>

    用 key 管理可复用的元素,因为两个模板使用了相同的元素,<input> 不会被替换掉——仅仅是替换了它的 placeholder。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>v-if 指令</title>
            <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js" type="text/javascript" charset="utf-8"></script>
        </head>
        <body>
    
            <div id="app">
                <template>
                    <div v-if="loginType === 'username'">
                        <label>username</label>
                        <input type="text" placeholder="enter your username">
                    </div>
                    <div v-else>
                        <label>passworld</label>
                        <input type="password" placeholder="enter your password">
                    </div>
                </template>
                
                <template>
                    <div v-if="loginType === 'username'">
                        <label>username</label>
                        <input type="text" placeholder="enter your username" key="a">
                        <!--vue是高效复用的,input还是2个input,当时输入缓存还在,为了区别开,用关键字key-->
                    </div>
                    <div v-else>
                        <label>passworld</label>
                        <input type="password" placeholder="enter your password" key="b">
                        <!--key 在浏览器控制台不显示哦,但能完美解决问题-->
                    </div>
                </template>
                <button v-on:click="fun">点击切换</button>
            </div>
        </body>
    </html>
    <script>
        var app = new Vue({
            el: "#app",
            data: {
                loginType: 'username',
            },
            methods: {
                fun: function() {
                    this.loginType == 'username' ? this.loginType = 'password' : this.loginType = 'username';
                }
            }
        })
    </script>

    所以 Vue 为你提供了一种方式来表达“这两个元素是完全独立的,不要复用它们”。只需添加一个具有唯一值的 key attribute 即可,每次切换时,输入框都将被重新渲染,达到清除缓存的目的。

    一辈子很短,努力的做好两件事就好;第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱。
  • 相关阅读:
    sql语言复习:学院-学生-教师-课程-学习-授课表上的一些操作
    JZOJ6358. 【NOIP2019模拟2019.9.15】小ω的仙人掌
    JZOJ6353. 【NOIP2019模拟】给(ca)
    【CSP-S2019模拟】09.13比赛总结
    【CSP-S2019模拟】09.11比赛总结
    JZOJ6341. 【NOIP2019模拟2019.9.4】C
    JZOJ6344. 【NOIP2019模拟2019.9.7】Huge Counting
    JZOJ6343. 【NOIP2019模拟2019.9.7】Medium Counting
    【随机编号】【 2019 Multi-University Training Contest 8】1008.Andy and Maze
    【吉如一线段树】JZOJ6270. 【省赛模拟8.10】序列
  • 原文地址:https://www.cnblogs.com/antao/p/12873904.html
Copyright © 2011-2022 走看看