Vue指令(2):v-for、v-if与v-show

v-for(遍历数据)

v-for:遍历数据渲染页面

遍历数组

语法:

v-for="item in items"
  1. items:要遍历的数组,需要在vue的data中定义好。
  2. item:循环变量
  • 示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试</title>
        <script src="node_modules/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="va">
            <ul>
                <li v-for="user in users">
                    {{user.name}}--{{user.age}}--{{user.gender}}
                </li>
            </ul>
        </div>
    <script>
        var va = new Vue({//创建一个vue实例
            el:"#va",
            data:{
                users:[
                    {"name":"张三","age":8,"gender":"男"},
                    {"name":"李四","age":12,"gender":"女"},
                    {"name":"王五","age":4,"gender":"男"}
                ]
            }
        });
    </script>
    </body>
    </html>
    
  • 页面显示:

    image-20211020210751924

遍历角标

需要知道数组角标,可以指定第二个参数:

语法:

v-for="(item,index) in items"
  1. items:要迭代的数组
  2. item:迭代得到的数组元素别名
  3. index:迭代到的当前元素索引,从0开始
  • 例子:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试</title>
        <script src="node_modules/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="va">
            <ul>
                <li v-for="(user,index) in users">
                    {{index}}----{{user.name}}--{{user.age}}--{{user.gender}}
                </li>
            </ul>
        </div>
    <script>
        var va = new Vue({//创建一个vue实例
            el:"#va",
            data:{
                users:[
                    {"name":"张三","age":8,"gender":"男"},
                    {"name":"李四","age":12,"gender":"女"},
                    {"name":"王五","age":4,"gender":"男"}
                ]
            }
        });
    </script>
    </body>
    </html>
    
  • 页面显示:

    image-20211020210954934

遍历对象

迭代对象,语法基本类似:

语法:

v-for="value in object"
v-for="(value,key) in object"
v-for="(value,key,index) in object"
  1. 1个参数时,得到的是对象的值
  2. 2个参数时,第一个是值,第二个是键
  3. 3个参数时,第三个是索引,从0开始
  • 示例:遍历对象中的每一个元素

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试</title>
        <script src="node_modules/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="va">
            <ul>
                <li v-for="(value,key,index) in person">
                    {{index}}--{{key}}--{{value}}
                </li>
            </ul>
        </div>
    <script>
        var va = new Vue({//创建一个vue实例
            el:"#va",
            data:{
                person:{"name":"张三", "age":13, "address":"中国"}
            }
        });
    </script>
    </body>
    </html>
    
  • 效果:

    image-20211020211243031

key

key的作用:

  • key是该项的唯一标识
  • 使用key这个功能可以有效的提高渲染的效率
  • key一般使用在遍历完后,想要增、减集合元素的时候,更加方便

示例:

<ul>
	<li v-for="(item,index) in items" :key="index"></li>
</ul>
  • 这里绑定的key是数组的索引,应该是唯一的

v-if与v-show

v-if(条件判断)

  • 测试代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试</title>
        <script src="node_modules/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="va">
            <button @click="show = !show">点我</button>
            <h2 v-if="show">
                v-if测试
            </h2>
        </div>
    <script>
        var va = new Vue({//创建一个vue实例
            el:"#va",
            data:{
                show:true
            }
        });
    </script>
    </body>
    </html>
    
  • 效果:

    image-20211021111924376

v-else

v-else 指令表示 v-if 的“else 块”:

注:

  1. v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别
  2. v-else-if :充当 v-if 的“else-if 块”,可以连续使用
  3. v-else-if 也必须紧跟在带 v-if 或者 v-else-if 的元素之后。
  • 测试

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试</title>
        <script src="node_modules/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="va">
            <ul>
                <li v-for="(user,index) in users" v-if="user.gender==''" style="background-color: red">
                    {{index}}----{{user.name}}--{{user.age}}--{{user.gender}}
                </li>
                <li v-else style="background-color: blue">
                    {{index}}----{{user.name}}--{{user.age}}--{{user.gender}}
                </li>
            </ul>
        </div>
    <script>
        var va = new Vue({//创建一个vue实例
            el:"#va",
            data:{
                users:[
                    {"name":"张三","age":8,"gender":"男"},
                    {"name":"李四","age":12,"gender":"女"},
                    {"name":"王五","age":4,"gender":"男"}
                ]
            }
        });
    </script>
    </body>
    </html>
    
  • 效果:

    image-20211021113206062

v-show(根据条件展示元素)

用法与v-if大致一样,类似

不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。

v-show 只是简单地切换元素的 CSS 属性display 。

  • 测试代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试</title>
        <script src="node_modules/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="va">
            <button @click="show = !show">点我</button>
            <h2 v-show="show">
                Hello VueJS.
            </h2>
        </div>
    <script>
        var va = new Vue({//创建一个vue实例
            el:"#va",
            data:{
                show:true
            }
        });
    </script>
    </body>
    </html>
    
  • 效果:

    image-20211021113732080

总结

v-if在条件不满足的时候元素不会存在;

v-show条件不满足的时候只是对元素进行隐藏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

?abc!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值