watch

监控一个值的变化,并调用因为变化需要执行的方法
当某个数据发生变化的时候,所有依赖这个数据的相关数据都自动发生变化,自动调用相关函数去实现数据的变动。

前后监控实例

  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. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
  8. <title>Document</title>
  9. </head>
  10. <body>
  11. <div id="computed_props">
  12. 千米 : <input type="text" v-model="kilometers">
  13. 米 : <input type="text" v-model="meters">
  14. </div>
  15. <p id="info"></p>
  16. <script type="text/javascript">
  17. var vm = new Vue({
  18. el: '#computed_props',
  19. data: {
  20. kilometers: 0,
  21. meters: 0
  22. },
  23. methods: {},
  24. computed: {},
  25. watch: {
  26. kilometers: function (val) {
  27. this.kilometers = val;
  28. this.meters = this.kilometers * 1000
  29. },
  30. meters: function (val) {
  31. this.kilometers = val / 1000;
  32. this.meters = val;
  33. }
  34. }
  35. });
  36. // $watch 是一个实例方法
  37. vm.$watch('kilometers', function (newValue, oldValue) {
  38. // 这个回调将在 vm.kilometers 改变后调用
  39. document.getElementById("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
  40. })
  41. </script>
  42. </body>
  43. </html>