v-for遍历数组(以及对象)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <ul> <li v-for="(item, index) in names">{{item}}-{{index+1}}</li> </ul> <ul> <li v-for="item in names">{{item}}</li> </ul> <li v-for="(value, key, index) in info">{{value}}-{{key}}-{{index+1}}</li> <br> <li v-for="value in info">{{value}}</li> </div> <script src="../js/vue.js"></script> <script> const app = new Vue({ el: '#app', data: { names: ['詹姆斯', '库里', '浓眉哥'], info: { name: 'job', age: 18, height: 1.88 } } }) </script> </body> </html>
v-for绑定key与不绑定的区别
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <ul> <!--绑定key要一致--> <li v-for="item in letters" :key="item">{{item}}</li> </ul> </div> <script src="../js/vue.js"></script> <script> /* app.letters.splice(2,2) ["C", "D"] app.letters.splice(2, 0, 'E') */ const app = new Vue({ el: '#app', data: { letters: ['A', 'B', 'C', 'D', 'E'] } }) </script> </body> </html>
diff算法
哪些数组的方法是响应式的
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <ul> <li v-for="item in letters">{{item}}</li> </ul> <button @click="btnClick">按钮</button> </div> <script src="../js/vue.js"></script> <script> const app = new Vue({ el: '#app', data: { message: '你好啊', letters: ['a', 'c', 'b', 'e', 'd'] }, methods: { btnClick() { // 一.响应式方法 // 1.数组的push方法 在数组的最后添加 // this.letters.push('x'); // this.letters.push('x', 'y'); // 2.数组的pop方法 在数组的最后删除并可以获取到 // v = this.letters.pop(); // console.log(v); // 3.数组的shift方法 在数组的第0个位置删除并获取到 // v = this.letters.shift(); // console.log(v); // 4.数组的unshift方法 在数组的第0位置开始添加 // this.letters.unshift('x', 'y', 'z'); // 5.数组的splice方法 删除元素, 替换元素, 插入元素 // 一个参数就是把之后的元素全部删除 // this.letters.splice(1); // 两个参数就是把索引后的元素(之后的几个元素)删除掉 // this.letters.splice(1, 2); // 三个参数表示在索引后的三个位置上的值分别修改为xyz // this.letters.splice(1, 3, 'x', 'y', 'z'); // 第二个参数为0 表示索引1后边的值增加xyz // this.letters.splice(1, 0, 'x', 'y', 'z') // 6.数组的sort方法 // this.letters.sort(); // 7.数组的reverse方法 // this.letters.reverse(); // 二.非响应式 修改之后页面不能立即显示出来 MVVM不能体现出来 Vue在这点没帮我们做 要想显示出来就自己实现 // this.letters[0] = 'cccc'; this.letters.splice(0, 1, 'ccc'); /* app.letters (5) ["cccc", "c", "b", "e", "d", __ob__: Observer] */ } } }); function sum(... num) { console.log(num); } sum(10, 20, 30, 40) </script> </body> </html>
案例点击谁谁变红色(默认第一个变红色)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .active{ color: red; } </style> </head> <body> <div id="app"> <ul> <li v-for="(item, index) in books" :class="{active:currentIndex===index}" @click="liClick(index)">{{item}}-{{index+1}}</li> </ul> </div> <script src="../js/vue.js"></script> <script> const app = new Vue({ el: '#app', data: { books: ['linux基础', 'Python异步编程', 'Django', 'Vue', 'Flask', 'Tornado'], currentIndex: 0, }, methods: { liClick(index){ this.currentIndex = index; } } }) </script> </body> </html>