6_set.html 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div id="app">
  11. <button @click="change">修改</button>
  12. <ul>
  13. <li v-for="(val,index) in arr">
  14. {{val}}
  15. {{index}}
  16. </li>
  17. </ul>
  18. </div>
  19. <script src="vue.js"></script>
  20. <script>
  21. /*
  22. Vue中 直接修改数组的索引 是没有办法驱动视图更新的
  23. 因为Vue不能检测到数组索引的变动
  24. Vue.set(data数据,修改值的索引,修改的参数)
  25. Vue要大写
  26. Vue提供的一个全局的方法 用于向响应式对象中添加一个属性 并且确保这个新属性也是响应式的
  27. Vue.set = this.$set
  28. push() pop() shift() unshift() splice() sort() reverse()
  29. Vue重写的方法 用来实现响应式更新
  30. */
  31. var app = new Vue({
  32. el: '#app',
  33. data: {
  34. arr: ['a','b','c','d'],
  35. person: {
  36. name:'zs',
  37. age: 18
  38. }
  39. },
  40. methods: {
  41. change(){
  42. // this.arr[0] = 'x'
  43. // console.log(1)
  44. // Vue.set(this.arr,0,'x')
  45. // this.$set(this.arr,0,'x')
  46. // this.person.name = 'lisi'
  47. // Vue.set(this.person,'name','lisi')
  48. this.arr.splice(0,1,'x')
  49. }
  50. }
  51. })
  52. </script>
  53. </body>
  54. </html>