美文网首页
Vue.js 条件渲染指令

Vue.js 条件渲染指令

作者: Rinaloving | 来源:发表于2019-08-02 17:53 被阅读0次
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>条件渲染指令</title>
</head>
<body>
    <div id="app">
        <p v-if="status === 1">当status为 1 时显示改行</p>
        <p v-else-if="status === 2">当status为2时显示该行</p>
        <p v-else>否则显示该行</p>
    </div>

    <!--如果一次判断的是多个元素,可以在Vue.js内置的<template>
    元素上使用条件指令,最终渲染的结果不会包含该元素-->
    <div id="app2">
        <template v-if="status === 1">
            <p>人生海海</p>
            <p>人生海海</p>
            <p>人生海海</p>
        </template>
    </div>

    <div id="app3">
        <template v-if="type === 'name'">
            <label>用户名:</label>
            <input placeholder="输入用户名">
        </template>
        <template v-else>
            <label>邮箱:</label>
            <input placeholder="输入邮箱">
        </template>
        <button @click="handleToggleClick">输入切换类型</button>
    </div>
    <br>
    <br>

    <!--如果不希望这样做,可以使用Vue.js提供的key属性,它可以让自己决定是否要复用元素
    ,key的值必须是唯一的,例如:-->
    <div id="app4">
        <template v-if="type === 'name'">
            <label>用户名2:</label>
            <input placeholder="输入用户名2" key="name-input">
        </template>
        <template v-else>
            <label>邮箱2:</label>
            <input placeholder="输入邮箱2" key="mail-input">
        </template>
        <button @click="handleToggleClick">切换输入类型2</button>

    </div>

    <!--自动识别最新稳定版本的Vue.js-->
    <script src="https://unpkg.com/vue/dist/vue.min.js"></script>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                status:1
            }
        })
    </script>

    <script>
        var app = new Vue({
            el:'#app2',
            data:{
                status:1
            }
        })
    </script>

    <script>
        var app = new Vue({
            el:'#app3',
            data:{
                type:'name'
            },
            methods:{
                handleToggleClick:function(){
                    this.type = this.type === 'name' ? 'mail':'name';
                }
            }
        })
    </script>

    <script>
        var app = new Vue({
            el:'#app4',
            data:{
                type:'name'
            },
            methods:{
                handleToggleClick:function(){
                    this.type = this.type === 'name' ? 'mail' : 'name';
                }
            }
        })
    </script>


</body>
</html>

给两个<input>元素都增加key后,就不会复用了,切换类型时键入的内容也会被删除,不过<lable>元素仍然是被复用的,因为没有添加key属性。
条件渲染指令.png

相关文章