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 即可,每次切换时,输入框都将被重新渲染,达到清除缓存的目的。

    一辈子很短,努力的做好两件事就好;第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱。
  • 相关阅读:
    PathInfo模式,thinkPHP模板与控制之间的关系
    thinkPHP无法显示验证码问题
    jQuery.validate 中文API手册
    MySQL 常用函数
    MySQL插入、更新与删除数据 习题
    MySQL查询语句练习题
    在windows下SphinxCoreseek的配置安装与测试
    Ubuntu上Coreseek+PHP的安装
    Ubuntu下安装CoreSeek
    Ubuntu更新命令
  • 原文地址:https://www.cnblogs.com/antao/p/12873904.html
Copyright © 2011-2022 走看看