17.数据监听.html 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <button @click="changeName">修改第二项的名字</button>
  11. <ul v-for="(item,index) in arr" :key="index">
  12. <li>{{index+1}}.我叫{{item.name}}--今年{{item.age}}了--我是{{item.sex}}孩</li>
  13. </ul>
  14. </div>
  15. <script src="./vue.js"></script>
  16. <script>
  17. var app = new Vue({
  18. el: "#app",
  19. data: {
  20. arr: [
  21. {
  22. name: "Lucy",
  23. age: 11,
  24. sex: "女",
  25. },
  26. {
  27. name: "LiLi",
  28. age: 31,
  29. sex: "男",
  30. },
  31. {
  32. name: "八戒",
  33. age: 21,
  34. sex: "男",
  35. },
  36. {
  37. name: "八卦",
  38. age: 23,
  39. sex: "男",
  40. },
  41. {
  42. name: "孙悟空",
  43. age: 27,
  44. sex: "男",
  45. },
  46. {
  47. name: "唐僧",
  48. age: 33,
  49. sex: "女",
  50. },
  51. ],
  52. },
  53. /**
  54. * Vue2响应式:Object.defineProperty()实现
  55. * 它只能监听对象属性的修改 无法监听数组下标直接赋值
  56. */
  57. methods: {
  58. changeName() {
  59. // this.arr[1].name = '图图';
  60. this.arr[1] = { name: "图图", age: 3 }
  61. // this.$set(this.arr,1,{ name: "图图", age: 3 })
  62. // Vue.set(this.arr,1,{ name: "图图", age: 3 })
  63. console.log(this.arr, 'arr')
  64. }
  65. },
  66. computed:{},
  67. watch:{},
  68. created() {
  69. }
  70. })
  71. </script>
  72. </body>
  73. </html>