Vue入门指南(5)

v-if 和 v-show

直接看v-if例子来

<h1> v-if 和 v-show </h1>
<div id="vue-app">
        <button v-on:click="error=!error">Error</button>
        <button v-on:click="ok=!ok">Ok</button>
        <p v-if="error">网络连接错误:404</p>
        <p v-else-if="ok">网络连接成功:200</p>
</div>

<script src="vue.js"></script>
<script>
        new Vue({
            el: '#vue-app',
            data: {
                error: false,
                ok: false
            }
        });
</script>

TIM图片20180125164626.jpg
TIM图片20180125164630.jpg
我们会看到,当条件为真时,p存在于DOM中,为假时,p完全不存在。这是因为v-if是真实的条件渲染,它会确保条件块在切换当中合适地销毁与重建条件块内的事件监听器和子组件。有更高的切换消耗。
再来看看v-show

<p v-if="show">网络连接错误:404</p>
<p v-else-if="show">网络连接成功:200</p>

TIM图片20180125170354.png
在v-show中,仅仅改变的是p的display。因为v-show只是简单地基于 CSS 切换。有更高的初始渲染消耗。
所以,需要频繁切换时用v-show,如果在运行时条件不大可能改变则用v-if。

v-for
<h1>for循环</h1>
<div id="vue-app">
        <ul>
            <li v-for="word in words">
                {{word}}
            </li>
        </ul>

        <template v-for="(user,index) in users">
            <p>{{index}}.{{user.name}}.{{user.age}}</p>
        </template>
</div>
<script src="vue.js"></script>
<script>
        new Vue({
            el: "#vue-app",
            data: {
                words: ["apple", "pear", "banana"],
                users: [{
                        name: "huijiao",
                        age: 20
                    },
                    {
                        name: "mimi",
                        age: 21
                    },
                    {
                        name: "shizhentao",
                        age: 22
                    }
                ]
            }
        })
</script>

TIM图片20180125183247.jpg
在这里我需要说一点,遍历users数组时我们用到了template标签,打开控制台我们发现实际上并没有这个标签。因为template在控制台不会渲染。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值