15.数据监听.html 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. <div v-for="(item,index) in arr" :key="index">
  11. {{item.name}}--{{item.age}}--{{item.sex}}
  12. </div>
  13. <button @click="getNews">修改数据</button>
  14. </div>
  15. <script src="./vue.js"></script>
  16. <script>
  17. var app = new Vue({
  18. data: {
  19. arr: [
  20. {
  21. name: "Lucy",
  22. age: 11,
  23. sex: "女",
  24. },
  25. {
  26. name: "LiLi",
  27. age: 31,
  28. sex: "男",
  29. },
  30. {
  31. name: "八戒",
  32. age: 21,
  33. sex: "男",
  34. },
  35. {
  36. name: "八卦",
  37. age: 23,
  38. sex: "男",
  39. },
  40. {
  41. name: "孙悟空",
  42. age: 27,
  43. sex: "男",
  44. },
  45. {
  46. name: "唐僧",
  47. age: 33,
  48. sex: "女",
  49. }
  50. ],
  51. },
  52. methods: {
  53. getNews() {
  54. // 数据修改 视图未更新
  55. // Object.defineProperty 中的getter和setter去对数据进行设置和修改
  56. console.log("修改")
  57. // this.arr[2] = {name:"小郑",age: 20,sex:"女"}
  58. // 第一种写法
  59. // Vue.set(target,index/name,obj)
  60. Vue.set(this.arr,1,{name:"小郑",age: 20,sex:"女"})
  61. // 第二种写法
  62. this.$set(this.arr,2,{name:"小李",age: 24,sex:"男"})
  63. console.log(this.arr)
  64. }
  65. },
  66. }).$mount("#app");
  67. </script>
  68. </body>
  69. </html>