4.vue数据监听.html 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. <ul>
  11. <li v-for="(item,index) of person" :key="index">
  12. {{item.name}}--{{item.age}}--{{item.sex}}
  13. </li>
  14. </ul>
  15. <button @click="updateMsg">修改</button>
  16. </div>
  17. <script src="./vue.js"></script>
  18. <script>
  19. var app = new Vue({
  20. el:'#app',
  21. data:{
  22. person:[
  23. {
  24. name:"LiLi",
  25. age: 19,
  26. sex: '女'
  27. },
  28. {
  29. name:"Ming",
  30. age: 29,
  31. sex: '男'
  32. },
  33. {
  34. name:"Lucy",
  35. age: 99,
  36. sex: '女'
  37. },
  38. {
  39. name:"马冬梅",
  40. age: 98,
  41. sex: '女'
  42. },
  43. ],
  44. },
  45. methods: {
  46. // vue 响应式原理 => Object.defineProperty(getter/setter)
  47. // 数据监听 => 数据与视图的更新
  48. // Vue.set(target,propertyName/index,value)
  49. // (app实例).$set(target,propertyName/index,value)
  50. updateMsg() {
  51. // this.person[1] = {name:"马琛",age: 20,sex:'男'}
  52. this.$set(this.person,1,{name:"马琛",age: 20,sex:'男'})
  53. // Vue.set(this.person,1,{name:"马琛",age: 20,sex:'男'})
  54. }
  55. },
  56. })
  57. </script>
  58. </body>
  59. </html>