当前位置:   article > 正文

【Vue】2-6、侦听器

【Vue】2-6、侦听器

watch 侦听器

watch 侦听器允许开发者监听数据的变化,从而针对数据的变化做特定的操作。

语法格式如下:

  1. const vm = new Vuew({
  2. el: '#app',
  3. data: { username: ''},
  4. watch: {
  5. username(newVal,oldVal){
  6. console.log(newVal,oldVal);
  7. }
  8. }
  9. })
  1. <body>
  2. <div id="app">
  3. <input type="text" v-model="username">
  4. </div>
  5. <!-- 导入 Vue 的库文件 -->
  6. <script src="./lib/vue.js"></script>
  7. <!-- Jquery -->
  8. <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  9. <!-- 创建 Vue 的实例对象 -->
  10. <script>
  11. /**
  12. const vm = new Vue({
  13. // el 固定写法,表示当前 vm 实例要控制页面上的哪个区域,接收的值是一个选择器
  14. el: '#app',
  15. // data 对象就是要渲染到页面上的数据
  16. data:{
  17. username: ''
  18. },
  19. watch: {
  20. username(newVal){
  21. if(newVal != ''){
  22. $.get('https://www.escook.cn/api/finduser/' + newVal,function(res){
  23. console.log(res)
  24. })
  25. }
  26. }
  27. }
  28. })
  29. const vm = new Vue({
  30. // el 固定写法,表示当前 vm 实例要控制页面上的哪个区域,接收的值是一个选择器
  31. el: '#app',
  32. // data 对象就是要渲染到页面上的数据
  33. data:{
  34. username: 'Jack'
  35. },
  36. watch: {
  37. username: {
  38. // 侦听器的处理函数
  39. handler(newVal){
  40. if(newVal != ''){
  41. $.get('https://www.escook.cn/api/finduser/' + newVal,function(res){
  42. console.log(res)
  43. })
  44. }
  45. },
  46. immediate: true
  47. }
  48. }
  49. })
  50. */
  51. const vm = new Vue({
  52. // el 固定写法,表示当前 vm 实例要控制页面上的哪个区域,接收的值是一个选择器
  53. el: '#app',
  54. // data 对象就是要渲染到页面上的数据
  55. data:{
  56. info:{
  57. username: 'Jack'
  58. }
  59. },
  60. watch: {
  61. /**
  62. info:{
  63. handler(newVal){
  64. console.log(newVal);
  65. },
  66. deep: true
  67. }
  68. */
  69. // 侦听对象属性的变化
  70. 'info.username'(newVal){
  71. console.log(newVal)
  72. }
  73. }
  74. })
  75. </script>
  76. </body>

注意:

以上形式是把侦听器定义为一个函数,所以在页面刚进来的时候是不会调用的,只有在侦听器侦听的对象数据发生变化了才会调用侦听器,并执行相应操作。

而且通过此方法定义的侦听器无法侦听对象的属性的变化。

通过 immediate 选项让页面刚加载时便调用侦听器。

通过 deep 选项让侦听器深度侦听对象中每个属性的变化。  

 

一  叶  知  秋,奥  妙  玄  心

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/50007
推荐阅读
相关标签
  

闽ICP备14008679号