Vue分支循环结构
一、v-if 、v-else-if、 v-else 、v-show
代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>分支结构</title>
    <style type="text/css">
        [v-cloak] {
            display: none;
        }
    </style>
</head>
<body>
<div id="app">
    年龄:<input v-model="age"><br>
    阶段:
    <div v-if="age < 10">儿童</div>
    <div v-else-if="age >10 && age < 20">青年</div>
    <div v-else>其他</div>
    <div v-show="age === '100'"> 百岁老人 </div>
</div>
</body>
</html>
<script type="text/javascript" src="../js/vue.min.js"></script>
<script type="text/javascript">
    var vm = new Vue(
        {
            el: '#app',  // el 属性值 要和上面html中id的值相同(多个#)
            data: {      // data 属性 值是个js对象  里面用来存放需要用到的数据
                age:'1'
            },
            methods: {   // 方法  也是一个js对象 里面可以定义多个方法逗号隔开
                
            }
        }
    );
</script>
注意v-if 和v-show的区别
二者都可以控制DOM元素的显示和隐藏
(1)v-if 条件如果是false 那么该指令所在的DOM元素将不会渲染到页面 而v-show条件如果是false DOM元素只是简单的改变样式不显示 实际上已经渲染到了页面
(2)v-show 实际上就是控制了样式 display:none
二者的使用场景 如果页面需要经常处理元素的显示和隐藏 推荐使用v-show (元素已渲染到页面)
如果经过v-if判断之后的元素不需要再做动态的显示隐藏逻辑处理了 则推荐使用v-if (控制DOM元素的渲染比较耗费性能)
二、v-for循环结构
代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>分支结构</title>
</head>
<body>
<div id="app">
    <ul>
        <li v-for="(item,index) in dogs">{{item}}-----{{index}}</li>
    </ul>
</div>
</body>
</html>
<script type="text/javascript" src="../js/vue.min.js"></script>
<script type="text/javascript">
    var vm = new Vue(
        {
            el: '#app',  // el 属性值 要和上面html中id的值相同(多个#)
            data: {      // data 属性 值是个js对象  里面用来存放需要用到的数据
                dogs:[
                    '拉拉',
                    '滴滴',
                    '哗哗',
                ]
            },
            methods: {   // 方法  也是一个js对象 里面可以定义多个方法逗号隔开
            }
        }
    );
</script> 
拉拉——————0
滴滴——————1
哗哗——————2
(括号内第一个参数为遍历的元素对象 第二个参数为元素的下标从0开始)
  <li v-for="(item,index) in dogs">{{item}}-----{{index}}</li>
遍历数组内存的对象数据
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>分支机构</title>
</head>
<body>
<div id="app">
    <ul>
        <li v-for="(item,index) in dogs">
            <span>姓名:{{item.name}}</span>
            <span>年龄:{{item.age}}</span>
            <span>序号:{{index}}</span>
        </li>
    </ul>
</div>
</body>
</html>
<script type="text/javascript" src="../js/vue.min.js"></script>
<script type="text/javascript">
    var vm = new Vue(
        {
            el: '#app',  // el 属性值 要和上面html中id的值相同(多个#)
            data: {      // data 属性 值是个js对象  里面用来存放需要用到的数据
                dogs:[
                    {
                        name:'拉拉',
                        age:5,
                    },
                    {
                        name:'滴滴',
                        age:3,
                    },
                    {
                        name:'哗哗',
                        age:6,
                    },
                ]
            },
            methods: {   // 方法  也是一个js对象 里面可以定义多个方法逗号隔开
            }
        }
    );
</script>
- 姓名:拉拉 年龄:5 序号:0
- 姓名:滴滴 年龄:3 序号:1
- 姓名:哗哗 年龄:6 序号:2
另外建议for循环遍历生成DOM元素使用 key 属性 取唯一值 这样能够帮助Vue区分不同的元素从而提高性能
用法 一般key取对象的id
 <li :key="index" v-for="(item,index) in dogs">
            <span>姓名:{{item.name}}</span>
            <span>年龄:{{item.age}}</span>
            <span>序号:{{index}}</span>
</li>
v-for除了能遍历数组之外还能够遍历对象 也可结合v-if使用
代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>分支结构</title>
</head>
<body>
<div id="app">
    <ul>
<!--        值 key名称  索引-->
        <li v-if="index===0 || index===1" :key="index" v-for="(value,key,index) in myDog">
            {{value}}---{{key}}----{{index}}
        </li>
    </ul>
</div>
</body>
</html>
<script type="text/javascript" src="../js/vue.min.js"></script>
<script type="text/javascript">
    var vm = new Vue(
        {
            el: '#app',  // el 属性值 要和上面html中id的值相同(多个#)
            data: {      // data 属性 值是个js对象  里面用来存放需要用到的数据
               myDog:{
                   name:'拉拉',
                   age:'5',
                   color:'白色',
                   weight:'10kg'
               }
            },
            methods: {   // 方法  也是一个js对象 里面可以定义多个方法逗号隔开
            }
        }
    );
    // 原生js 遍历对象
    var myDog = {
        name:'拉拉',
        age:'5',
        color:'白色',
        weight:'10kg'
    };
    for (let key in myDog) {
        console.log(key+'====>>>>'+myDog[key])
    }
</script>
拉拉—name—0
5——age——1
拉拉——name——0
5——age——1
白色——color——2
10kg——wight——3
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号