13_watch.html 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. <script src="./js/vue.js"></script>
  8. </head>
  9. <body>
  10. <div id="app">
  11. <h1>{{num1}}+{{num2}}={{sum}}</h1>
  12. <button @click="changeFun">change</button>
  13. </div>
  14. <script>
  15. var app = new Vue({
  16. el: '#app',
  17. data:{
  18. num1:1,
  19. num2:2,
  20. sum:0,
  21. arr:[1,2,3],
  22. obj:{
  23. a:1,
  24. b:{
  25. c:1
  26. }
  27. }
  28. },
  29. methods:{
  30. changeFun:function(){
  31. this.num2 = 100;
  32. this.num1 = 100;
  33. this.arr[1] = 100;
  34. // this.arr = ['a','b','c']
  35. this.obj.b = 100;
  36. }
  37. },
  38. watch:{
  39. num2:function(val,oldVal){
  40. // watch 监听num2的变化 接受两个参数 val 代表新值 oldVal 代表旧值
  41. console.log("num2=",val,oldVal)
  42. this.sum = this.num1 + val
  43. },
  44. num1:{
  45. handler(val,oldVal){
  46. console.log("num1=",val,oldVal)
  47. }
  48. },
  49. arr:{
  50. handler(val,oldVal){
  51. console.log("arr=",val,oldVal)
  52. },
  53. deep:true
  54. },
  55. obj:{
  56. handler(val,oldVal){
  57. console.log("obj=",val,oldVal)
  58. },
  59. deep:true
  60. }
  61. }
  62. })
  63. </script>
  64. </body>
  65. </html>