Vue入门指南——侦听器

小鱼儿 2023-07-02 07:26 83阅读 0赞

目录:

    • 一、什么是侦听器?
    • 二、侦听器的应用场景
    • 三、侦听器的用法
    • 四、小案例(验证用户名是否可用)
    • 五、注意事项

一、什么是侦听器?

侦听器是用来检测数据变化从而来添加执行自己自定义逻辑的代码(数据一旦发生变化就通知侦听器所绑定方法 )。这一点和计算属性很相似,然而计算属性一般作用于简单的一些小逻辑代码,如果逻辑比较复杂可以使用侦听器。

二、侦听器的应用场景

  • 一般用于异步或者开销较大的操作(如 ajax,计时器等一些耗时操作)

三、侦听器的用法

  1. <div id="app">
  2. <div>
  3. <span>名:</span>
  4. <span>
  5. <input type="text" v-model='firstName'>
  6. </span>
  7. </div>
  8. <div>
  9. <span>姓:</span>
  10. <span>
  11. <input type="text" v-model='lastName'>
  12. </span>
  13. </div>
  14. <div>{ { fullName}}</div>
  15. </div>
  16. <script type="text/javascript">
  17. /* 侦听器 */
  18. var vm = new Vue({
  19. el: '#app',
  20. data: {
  21. firstName: 'Jim',
  22. lastName: 'Green',
  23. // fullName: 'Jim Green'
  24. },
  25. //watch 属性 定义 和 data 已经 methods 平级
  26. watch: {
  27. // 注意: 这里firstName 对应着data 中的 firstName
  28. // 当 firstName 值 改变的时候 会自动触发 watch
  29. firstName: function(val) {
  30. this.fullName = val + ' ' + this.lastName;
  31. },
  32. // 注意: 这里 lastName 对应着data 中的 lastName
  33. lastName: function(val) {
  34. this.fullName = this.firstName + ' ' + val;
  35. }
  36. }
  37. });
  38. </script>

四、小案例(验证用户名是否可用)

需求:输入框中输入姓名,失去焦点时验证是否存在,如果已
经存在,提示从新输入,如果不存在,提示可以使用。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. <div>
  10. <span>用户名:</span>
  11. <span>
  12. <input type="text" v-model.lazy='uname'>
  13. </span>
  14. <span>{ { tip}}</span>
  15. </div>
  16. </div>
  17. <script type="text/javascript" src="./lib/vue.js"></script>
  18. <script type="text/javascript">
  19. /* 侦听器 1、采用侦听器监听用户名的变化 2、调用后台接口进行验证 3、根据验证的结果调整提示信息 */
  20. var vm = new Vue({
  21. el: '#app',
  22. data: {
  23. uname: '',
  24. tip: ''
  25. },
  26. methods: {
  27. checkName: function(uname) {
  28. // 调用接口,但是可以使用定时任务的方式模拟接口调用
  29. var that = this;
  30. setTimeout(function(){
  31. // 模拟接口调用
  32. if(uname == 'admin') {
  33. that.tip = '用户名已经存在,请更换一个';
  34. }else{
  35. that.tip = '用户名可以使用';
  36. }
  37. }, 2000);
  38. }
  39. },
  40. watch: {
  41. uname: function(val){
  42. // 调用后台接口验证用户名的合法性
  43. this.checkName(val);
  44. // 修改提示信息
  45. this.tip = '正在验证...';
  46. }
  47. }
  48. });
  49. </script>
  50. </body>
  51. </html>

五、注意事项

  • 侦听器里面的参数val为当前当前数据变化后的最新值。
  • 侦听器里的属性名需要与data数据中的名字一致。
  • watch 中的属性 一定是data 中 已经存在的数据。
  • 侦听器性能方面比不上计算属性。
  • 当需要监听一个对象的改变时,普通的watch方法无法监听到对象内部属性的改变,只有data中的数据才能够监听到变化,此时就需要deep属性对对象进行深度监听

如果您也正在学习前端的路上,记得关注该博主,学习更多关于前端的知识~

博主主页 Poetic Code

发表评论

表情:
评论列表 (有 0 条评论,83人围观)

还没有评论,来说两句吧...

相关阅读

    相关 08vue_侦听器

          虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据

    相关 Vue.js之侦听器

    虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 `watch` 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执

    相关 Vue侦听器

    侦听器   虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要