zoukankan      html  css  js  c++  java
  • 007 v-if,v-else-if,v-else和v-show

    [A] v-if...v-else   条件显示

      1. 行内属性v-if的值为true时,则当前标签才被渲染出来,值为false,则不被渲染出来

      2. 当v-if和v-else成对出现时,在任意时刻可都只会渲染其中一个

                示例:

                    <div v-if="isShow">我的名字是:{{name}}</div>

                    <div v-else>我的性别是:{{sex}}</div>

           

    [B] v-if...v-else-if......v-else

                当出现多个条件时,使用v-else-if,在多个选择中,只显示一个

                示例:

                    <div>

                        <div v-if="score > 90">优秀</div>

                        <div v-else-if="score > 80">良好</div>

                        <div v-else-if="score > 60">中等</div>

                        <div v-else>不及格</div>

                    </div>

    [C] v-show 

      该属性的值为布尔值,值为true表示改标签显示,值为false表示该标签不显示

                如:<h2 v-show="isShow">Carrey</h2>  // 渲染后,该标签在页面上是看不到的

                   

    [D] v-if和v-show的区别

                1. 当v-if和v-show的值为true时,没有区别,都表示当前元素显示

                2. 当v-if和v-show的值为false时

                    v-if表示该元素不会被渲染, 即在开发者工具中看不到该节点

                    v-show表示钙元素会被渲染,但是他的display属性被设置为none,在开发者工具中可以看到,但是界面上看不到

                【使用技巧】

                    当需要显示和隐藏的频率很高时,使用v-show

                    当只需要切换一次时,选择v-if

    [E] 实战演练  属性key的使用

                在登录界面,用户可以选择邮箱登录还是手机号登录

                注意点:input复用的问题

                问题:

                    1. 我们在有输入的情况下,切换了类型,我们会发现之前输入的内容还在输入框中

                    2. 但是,按理说切换到一个新的input中后,新的input元素没有输入内容,应该为空的

                    3. 为什么会出现这种情况?

                解释:

                    1. Vue在进行DOM渲染的时候,处于性能考虑,会尽可能的复用之前已经存在的元素

                    2. 若之前的元素已然存在,则已然使用之前的元素,仅仅修改不一样的地方即可。

                    3. 因此,上面且更新了类型,但是input元素没变,这是修改了两个input元素不一样的地方

                解决:

                    给input元素添加key属性,不一样的key会被认定为不同的两个DOM节点,会直接更换input元素。

    示例代码:

    <style>
        .score{height: 50px; background-color:gray;}
        .login{  500px; height: 300px; background-color: green;}
        .btn{display: flex; justify-content: space-around; align-items: center;}
    </style>
    <body>
        <div id="app">
            <div v-if="isShow">我的名字是:{{name}}</div>
            <div v-else>我的性别是:{{sex}}</div>
            <div>
                <button @click="btnClick()">按钮</button>
            </div>
            <div class="score">
                <div v-if="score > 90">优秀</div>
                <div v-else-if="score > 80">良好</div>
                <div v-else-if="score > 60">中等</div>
                <div v-else>不及格</div>
            </div>
            ********************用户登录演练************************
            <div>
                <div class="login btn">
                    <span v-if="promts[0] == '手机号'">
                        <label for="email">用户{{promts[1]}}</label>
                        <input type="text" placeholder="请输入邮箱号" id="email" key="email">
                    </span>
                    <span v-else>
                        <label for="phoneNumber">用户{{promts[1]}}</label>
                        <input type="text" placeholder="请输入手机号" id="phoneNumber" key="phoneNumber">
                    </span>
                    <button @click="shitfClick()">切换为{{promts[0]}}</button>
                    <div>
                        <button>确定</button>
                        <button>取消</button>
                    </div>
                </div>
            </div>
            ***********************v-if和v-show对比*********************
            <h2 v-show="isShow">Carrey</h2>
            <h2 v-if="isShow">Carrey hello</h2>
            hahah
            
        </div>
    </body>
    <script>
        var app = new Vue({
            el: "#app",
            data:{
                name: "Carrey",
                msg: "你好啊,我的朋友",
                isShow: true,
                sex: "男",
                score: 89,
                promts:["手机号", "邮箱号"],
            },
            methods:{
                btnClick(){
                    this.isShow = !this.isShow;
                },
                shitfClick(){
                    this.promts.unshift(this.promts.pop());
                }
            }
        })
    </script>
    View Code
  • 相关阅读:
    快速编辑里指定默认值
    Odoo domain 中的 like, ilike, =like, =ilike 举例说明【转】
    odoo报表条码无法显示解决[转]
    ubuntu 安装 wkhtmltopdf 的方法
    解决Odoo日期(时间)无效的问题 [转]
    ShareSDK演示
    黑客帝国数字矩阵特效做法
    lua中实现倒计时
    Lua中用Split函数分割字符串
    lua封装的位运算
  • 原文地址:https://www.cnblogs.com/carreyBlog/p/14062006.html
Copyright © 2011-2022 走看看