3 条件与循环

2019-03-06  本文已影响0人  陶然然_niit

条件渲染指令: v-if、v-else-if、v-else:可以根据表达式的值在DOM中渲染或销毁元素/组件,与v-show不同的是,v-if是真正的条件渲染,适合条件不经常变更的场景;而v-show只是简单的CSS属性切换,使用于频繁切换条件。

v-if举例:

<div id = "app">
    <p v-if="status === 1">当status为1时显示该行</p>
    <p v-else-if="status === 2">当status为2时显示该行</p>
    <p v-else>否则显示该行</p>
</div>
<script>
 var app = new Vue({
     el : '#app',
     data:{
       status:1
    }
})
</script>

v-show举例:

<div id = "app">
    <p v-show="status === 1">当status为1时显示该行</p>
</div>
<script>
 var app = new Vue({
     el : '#app',
     data:{
       status:2
    }
})
</script>

列表渲染指令:v-for:当需要将一个数组遍历或枚举一个对象循环显示时,会用到列表渲染指令v-for,结合in来使用

举例:

<div id = "app">
    <ul>
       <li v-for="book in books">
          {{book.name}}
      </li>
    </ul>
</div>
<script>
  var app = new Vue({
      el : '#app',
      data:{
         books:[
           { name : 'Vue.js'},
           { name : 'JavaScript'},
           { name : 'HTML5+CSS3'},
          ]
     }
})
</script>

条件与循环结合的一个综合例子:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Vue.js条件与循环</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <style type="text/css">
            #app {
                width: 80%;
                margin: 0 auto;
            }

            .container {
                display: flex;
            }

            .card {
                width: 200px;
                height: 200px;
                border: 1px solid #eee;
                border-radius: 10px;
                margin-right: 30px;
                text-align: center;
            }

            .card img {
                width: 100%;
                height: 100%;
                border-bottom-left-radius: 10px;
                border-bottom-right-radius: 10px;
            }
            .like{
                color: green;
            }
            .no-like{
                color: red;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <h2 v-if="show">显示书籍信息</h2>
            <div class="container">
                <div class="card" v-for="book in books">
                    <h4>{{book.name}}</h4>
                    <img :src="book.cover">
                    <!-- <p v-if="book.like">喜欢</p> -->
                    <p v-if="book.like === true" class="like">喜欢</p>
                    <p v-else class="no-like">不喜欢</p>
                </div>
            </div>
        </div>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    show: true,
                    books: [{
                            name: '时间的礼物',
                            cover: 'https://img1.doubanio.com/view/subject/m/public/s29951659.jpg',
                            like: true
                        },
                        {
                            name: '显微镜下的大明',
                            cover: 'https://img3.doubanio.com/view/subject/m/public/s29960161.jpg',
                            like: false

                        },
                        {
                            name: '夏摩山谷',
                            cover: 'https://img3.doubanio.com/view/subject/m/public/s29967206.jpg',
                            like: true

                        },
                        {
                            name: '642件可写的事',
                            cover: 'https://img3.doubanio.com/view/subject/m/public/s29953545.jpg',
                            like: false
                        }
                    ]
                }
            })
        </script>
    </body>
</html>
运行结果
上一篇 下一篇

猜你喜欢

热点阅读