Vue循環渲染(v-for)


1.v-for基本用法 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>v-for 指令</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <div id="app">
            <!--v-for循環普通數組-->
            <p v-for="(item,i) in list">--索引值--{{i}} --每一項--{{item}}</p>
            <br />

            <!--v-for循環對象數組-->
            <p v-for="(item,i) in listObj">--索引值--{{i}}--id--{{item.id}} --姓名--{{item.name}}</p>
            <br />

            <!--v-for迭代對象;注意,在遍歷對象的鍵值對的時候,除了有 val 和 key,在第三個位置還有一個索引-->
            <p v-for="(val,key,i) in user">--索引值--{{i}}--鍵是--{{key}} --值是--{{val}}</p>
            <br />

            <!--v-for迭代數字; in 后面我們放過數組、對象數組、對象,還可以放數字-->
            <!-- 注意:如果使用v-for迭代數字的話,前面 count 的值從 1 開始-->
            <p v-for="count in 10">這是第{{count}}次循環</p>
        </div>
    </body>
</html>
<script>
    var app = new Vue({
        el: "#app",
        data: {
            list: [1, 2, 3, 4, 5],
            listObj: [{
                    id: 1,
                    name: 'zs1'
                },
                {
                    id: 2,
                    name: 'zs2'
                },
                {
                    id: 3,
                    name: 'zs3'
                },
                {
                    id: 4,
                    name: 'zs4'
                },
                {
                    id: 5,
                    name: 'zs5'
                },
            ],
            user: {
                id: 1,
                name: '小明',
                gender: '',
                age: '18',
                classname: 'A1631'
            }
        }
    })
</script>

 

2.v-for為什么要加key

先看示例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>v-for 指令</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <div id="app">
            <div>
                <input type="text" v-model="name">
                <button @click="add">添加</button>
            </div>
            <ul>
                <li v-for="(item,i) in list">
                    <input type="checkbox"> {{item.name}}
                </li>
            </ul>
            <br />
            <ul>
                <li v-for="(item, i) in list" v-bind:key="item.id">
                    <input type="checkbox"> {{item.name}}
                </li>
            </ul>
        </div>
    </body>
</html>
<script>
    var app = new Vue({
        el: "#app",
        data: {
            name: '',
            newId: 3,
            list: [{
                    id: 1,
                    name: 'xt1'
                },
                {
                    id: 2,
                    name: 'xt2'
                },
                {
                    id: 3,
                    name: 'xt3'
                },
            ],
        },
        methods: {
            add() {
                //注意這里是unshift
                this.list.unshift({
                    id: ++this.newId,
                    name: this.name
                })
                this.name = ''
            }
        },
    });
</script>

沒有key時,當選中xt2時,添加xt后選中的卻是xt1,並不是我們想要的結果;有key時,當選中xt2時,添加xt后依舊選中的是xt2,是我們想要的結果。

vue中列表循環需加:key="唯一標識" 唯一標識可以是item里面id index等,因為vue組件高度復用,增加Key可以標識組件的唯一性。

 

3.v-if 與 v-for 一起使用

當 v-if 與 v-for 一起使用時,v-for 具有比 v-if 更高的優先級。

這意味着 v-if 將分別重復運行於每個 v-for 循環中。當你只想為部分項渲染節點時,這種優先級的機制會十分有用。

有數據時顯示循環列表,沒有數據時顯示暫無數據。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>v-for 指令</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <div id="app">
            <ul v-if="todos.length>0">
                <li v-for="todo in todos" v-bind:key="todo.id">
                    {{ todo.name }}
                </li>
            </ul>
            <p v-else>暫時沒有數據</p>
        </div>
    </body>
</html>
<script>
    var app = new Vue({
        el: "#app",
        data: {
            todos: [{
                    id: 1,
                    name: '列表1'
                },
                {
                    id: 2,
                    name: '列表2'
                },
                {
                    id: 3,
                    name: '列表3'
                },
            ],
        },
    });
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM