Vue.js之if分支和for循环

目录

1.if分支

2.for循环


本文主要介绍Vue.js中if分支以及for循环的使用。

1.if分支

Vue.js提供了v-if、v-else-if以及v-else的分支语句,v-if可与v-else-if搭配使用。当判定结果符合条件时,相应的元素会被渲染出来,不符合条件的元素不会进行渲染。如下例所示。

 <div v-if="score>=90" v-text="'优秀'"></div>
 <div v-else-if="score>=80&&score<90" v-text="'良好'"></div>
 <div v-else-if="score>=70&&score<80" v-text="'一般'"></div>
 <div v-else-if="score>=60&&score<70" v-text="'及格'"></div>
 <div v-else v-text="'不及格'"></div>

score的值为98 

 new Vue({
            el: '#app',
            data: {
                score: 98
            }
        })

 渲染结果如下:

注意:另外介绍v-show指令,实质上是display属性的封装,通过true或false的设置显示或隐藏元素。如下所示

 <div v-text="'学生成绩'" v-show="false"></div>

 

 完整代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <div id="app">
        <div v-if="score>=90" v-text="'优秀'"></div>
        <div v-else-if="score>=80&&score<90" v-text="'良好'"></div>
        <div v-else-if="score>=70&&score<80" v-text="'一般'"></div>
        <div v-else-if="score>=60&&score<70" v-text="'及格'"></div>
        <div v-else v-text="'不及格'"></div>
        <div v-text="'学生成绩'" v-show="false"></div>
    </div>
    <script src="./vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                score: 98
            }
        })
    </script>
</body>

</html>

2.for循环

Vue.js提供v-for指令实现for循环,基本用法如下所示

 <ul>
            <li v-for="(element,index) in color" v-text="element+' 索引为: '+index"></li>
        </ul>

(1)遍历数组

利用element可访问数组中的元素,利用index可访问元素的索引。注:随着循环的执行,会创建相应的li元素。还可用v-for遍历较复杂的数据结构,如下面的对象数组,每次可遍历每个元素的所有属性。

<ul>
            <li v-for="element in student" :key="element.id">
                <span v-text="element.name"></span>
                <span v-text="'------'"></span>
                <span v-text="element.age"></span>
                <span v-text="'------'"></span>
                <span v-text="element.id"></span>
            </li>
        </ul>

相应的数据设置如下:

data: {
                color: ['red', 'blue', 'yellow', 'pink'],
                student: [{
                    id: 1,
                    name: 'zs',
                    age: 20
                }, {
                    id: 2,
                    name: 'ls',
                    age: 25
                }, {
                    id: 3,
                    name: 'w5',
                    age: 20
                }]
            }

效果如图:

:Vue.js通过给元素设置key属性,同时赋予唯一值(如id),以此提高程序性能。

 完整代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <div id="app">
        <ul>
            <li v-for="(element,index) in color" v-text="element+' 索引为: '+index"></li>
        </ul>
        <ul>
            <!-- 绑定key,给每项一个唯一标识符,为了提高性能 -->
            <li v-for="element in student" :key="element.id">
                <span v-text="element.name"></span>
                <span v-text="'------'"></span>
                <span v-text="element.age"></span>
                <span v-text="'------'"></span>
                <span v-text="element.id"></span>
            </li>
        </ul>
    </div>
    <script src="./vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                color: ['red', 'blue', 'yellow', 'pink'],
                student: [{
                    id: 1,
                    name: 'zs',
                    age: 20
                }, {
                    id: 2,
                    name: 'ls',
                    age: 25
                }, {
                    id: 3,
                    name: 'w5',
                    age: 20
                }]
            }
        })
        var lis = document.querySelectorAll('li');
        console.log(lis[lis.length - 1].key);
    </script>
</body>

</html>

(2)遍历对象

可指定三个形参,第一个表示对象属性的值,第二个表示对象的属性名,第三个表示索引号。案例如下。(注:在遍历的同时可以利用v-if进行指定数据的渲染,下面案例会显示属性名为“name”的指定数据)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
        <div v-if='property=="name"' v-for="(value,property,index) in student" v-text="value+'---'+property+'---'+index"></div>
    </div>
    <script src="./vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                student: {
                    name: 'zs',
                    age: 20
                }
            }
        })
    </script>
</body>

</html>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值