Vue 列表渲染

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="./vue.v2.6.10.dev.js"></script>
    </head>
    <body>
        <div id="app">
            <div v-for="item of list">{{item}}</div>
        </div>
        
        <script>
            var vm = new Vue({
                el: '#app',
                data: {
                    list: [
                        "木子才",
                        "普特斯",
                        "圣华尔",
                        "凯佩玉玲",
                        "信守切妮",
                        "伽罗敏",
                    ],
                },
                methods: {
                    
                }
            })
        </script>
    </body>
</html>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="./vue.v2.6.10.dev.js"></script>
    </head>
    <body>
        <div id="app">
            <div v-for="(item, index) of list">{{item}} ----- {{index}}</div>
        </div>
        
        <script>
            var vm = new Vue({
                el: '#app',
                data: {
                    list: [
                        "木子才",
                        "普特斯",
                        "圣华尔",
                        "凯佩玉玲",
                        "信守切妮",
                        "伽罗敏",
                    ],
                },
                methods: {
                    
                }
            })
        </script>
    </body>
</html>

key值可以提高性能。

添加 key值:(不建议用 index 作为 key 值)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="./vue.v2.6.10.dev.js"></script>
    </head>
    <body>
        <div id="app">
            <div v-for="(item, index) of list" :key="index">{{item}} ----- {{index}}</div>
        </div>
        
        <script>
            var vm = new Vue({
                el: '#app',
                data: {
                    list: [
                        "木子才",
                        "普特斯",
                        "圣华尔",
                        "凯佩玉玲",
                        "信守切妮",
                        "伽罗敏",
                    ],
                },
                methods: {
                    
                }
            })
        </script>
    </body>
</html>

推荐使用 数据的唯一标识值来做 key 值:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="./vue.v2.6.10.dev.js"></script>
    </head>
    <body>
        <div id="app">
            <div v-for="(item, index) of list" :key="item.id">{{item.text}} ----- {{index}}</div>
        </div>
        
        <script>
            var vm = new Vue({
                el: '#app',
                data: {
                    list: [{
                        id: '0001',
                        text: "木子才",
                    },{
                        id: '0002',
                        text: "普特斯",
                    },{
                        id: '0003',
                        text: "圣华尔",
                    },{
                        id: '0004',
                        text: "凯佩玉玲",
                    },{
                        id: '0005',
                        text: "信守切妮",
                    },{
                        id: '0006',
                        text: "伽罗敏",
                    },],
                },
                methods: {
                    
                }
            })
        </script>
    </body>
</html>

Vue提供了7个方法来操作数组,不能直接通过下标来操作,不然有些事件不能触发:数据变了,但页面不会跟着变。

pop
splice
push
shift
unshift
sort
reverse
vm.list.splice(1, 1, {id:"3333", text:"33333"})

从数组 下标1,删除1个,添加一个对象。

改变数据的引用也可以改变数据,页面也会跟着变。

template 标签可以包裹内容,而不会被渲染出来。

对象循环

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="./vue.v2.6.10.dev.js"></script>
    </head>
    <body>
        <div id="app">
            <div v-for="(item, key, index) of userInfo">{{item}} ----- {{key}} ----- {{index}}</div>
        </div>
        
        <script>
            var vm = new Vue({
                el: '#app',
                data: {
                    userInfo: {
                        name: 'Muzico',
                        age: 18,
                        gender: "male",
                    }
                },
                methods: {
                    
                }
            })
        </script>
    </body>
</html>

通过Vue.set(vm.userInfo, "address", "foshan") 也可以添加数据,页面也跟着变。

或者vm.$set(vm.userInfo, "phone", "18666")

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="./vue.v2.6.10.dev.js"></script>
    </head>
    <body>
        <div id="app">
            <div v-for="(item, index) of list">{{item}}</div>
        </div>
        
        <script>
            var vm = new Vue({
                el: '#app',
                data: {
                    list: [1,2,3,4]
                },
                methods: {
                    
                }
            })
        </script>
    </body>
</html>

改变数组:

Vue.set(vm.list, 1, 5)

或 vm.$set(vm.list, 1, 5)

(对象,下标,内容)