10_watch属性.html 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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}}</h1>
  12. <h1>{{obj.userName}}</h1>
  13. <button @click="changeNum">按钮</button>
  14. </div>
  15. <script>
  16. new Vue({
  17. el:"#app",
  18. data:{
  19. num1:1,
  20. obj:{
  21. userName:"张三",
  22. age:18
  23. }
  24. },
  25. methods:{
  26. changeNum(){
  27. this.num1 = 100;
  28. this.obj.userName = "李四";
  29. }
  30. },
  31. // 监听属性
  32. // 当data 中观察属性发生变化了 那么就会触发watch中的函数
  33. watch:{
  34. // 函数名称对应的是要观察的data中的属性名
  35. num1(newVal,oldVal){
  36. // 监听属性中默认有两个参数 第一个是修改后的值 第二个是修改前值
  37. console.log(newVal,oldVal);
  38. console.log("num1发生变化了");
  39. },
  40. // obj(newVal,oldVal){
  41. // console.log(newVal,oldVal);
  42. // console.log("obj发生变化了");
  43. // }
  44. // 监听对象中的属性变化
  45. obj:{
  46. handler(newVal,oldVal){
  47. console.log(newVal,oldVal);
  48. console.log("obj发生变化了");
  49. },
  50. // 监听对象中的属性变化 可以使用deep属性 开启深度监听
  51. deep:true
  52. }
  53. }
  54. })
  55. </script>
  56. </body>
  57. </html>