Vue中的v-if指令

2018-12-05  本文已影响0人  考拉_2044

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

    <style>

            ul{

                overflow: hidden;

            }

            li {

                list-style: none;

                width: 100px;

                height: 50px;

                line-height: 50px;

                border: 1px solid #000;

                float: left;

            }

            li.active {

                color: red;

                border-color: red;

            }

            .box{

                border: 1px solid #000;

                display: flex;

            }

            .box p{

                flex: 1;

                color: red;

            }

    </style>

</head>

<body>

    <div id="app">

        <ul>

            <li v-for=" (item,index) in tabs"

            :key="item.id"

            :class="{ 'active': curTab===item.id }"

            @click="curTab=item.id">

            {{ item.name }}

            </li> 

        </ul>

        <!-- v-if 条件为true当前元素才会显示,条件为false不会显示 -->

        <!-- 简单的选项卡 -->

        <div class="home"  v-if="curTab==='home'">首页</div>

        <div class="list"  v-if="curTab==='list'">列表</div>

        <div class="about" v-if="curTab==='about'">关于</div>

        <!-- ================================================== -->

        <div>

          用户名: {{ user.name }}

          年龄:  {{ user.age }}

            <!-- 这个意思是如果user.ishun为true那么久显示拉黑按钮

                如果显示为false显示点击获取手机号按钮

                v-if v-else

            -->

          <button v-if="!user.isHun">未婚,点击获取手机号</button>

          <button v-else>已婚,拉黑</button>

        </div>

        <!-- ================================================== -->

        <!-- 根据分数选择优秀,良好,及格 -->

        <!--  v-if v-else-if v-else -->

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

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

        <p v-else-if="score > 60" >及格</p>

        <p v-else>差</p>

        <!-- ================================================== -->

        <!-- 控制三个p标签显示-->

        <!-- 可以用一个父元素包括起来这样用父元素来管理3个标签

            但是这种方法添加多了一个元素标签有可能会影响到页面布局

            打乱样式

            如何解决:

                (1)改样式

                (2)将外层改为template

        -->

        <div class="box" >

                <div v-if="isP">

                        <p>p1</p>

                        <p>p2</p>

                        <p>p3</p>

                </div>

        </div>

        <!-- 该样式 -->

        <div class="box" v-if="isP">

                <p>改样式</p>

                <p>p1</p>

                <p>p2</p>

                <p>p3</p>

        </div>

        <!-- 外层套用template -->

        <div class="box" >

                <template v-if="isP">

                        <p>外层套用template</p>

                        <p>p1</p>

                        <p>p2</p>

                        <p>p3</p>

                </template>

        </div>

    </div>

</body>

</html>

<script src="/js/vue.js"></script>

<script>

    var vm = new Vue({

        el: '#app',

        data: {

            active: 'active',

            // 数据变量

            curTab: 'home', //home ||list

            user:{

                name:'张三',

                age:18,

                isHun:false

            },

            score:80,

            isP:true,//控制是否显示3个p标签

            //数量太多了可以写一个数组

            tabs: [{

                    'id': 'home',

                    name: '首页'

                },

                {

                    'id': 'list',

                    name: '列表页'

                },

                {

                    'id': 'about',

                    name: '关于'

                }

            ]

        }

    })

</script>

上一篇下一篇

猜你喜欢

热点阅读