Vue侦听器的用法即应用场景

侦听器的应用场景

数据变化时执行异步或开销较大的数据
在这里插入图片描述

侦听器的用法
<body>
    <div id="app">
      <div>
        <span>名:</span>
        <span>
          <input type="text" v-model="firstName">
        </span>
      </div>
      <div>
        <span>姓:</span>
        <span>
          <input type="text" v-model="lastName">
        </span>
      </div>
      <div>{{fullName}}</div>
    </div>
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
              firstName:"Jim",
              lastName:"Brown",
              fullName:"Jim Brown"
            },
            computed: {
              // fullName: function(){
              //   return this.fullName = this.firstName + ' ' + this.lastName;
              // }
            },
            watch: {
              firstName:function(val){
                this.fullName = val + '' + this.lastName;
              },
              lastName:function(val){
                this.fullName = this.firstName + '' +val;
              }
            }
        });
    </script>
</body>

当改变文本框中的姓或名时 下面的全名也会做出相应改变(用方法也可以实现)
在这里插入图片描述

侦听器的应用场景——验证用户名是否可用

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

分析:

  1. 通过v-model实现数据绑定
  2. 需要提供提示信息
  3. 需要侦听器监听输入信息的变化
  4. 需要修改触发的事件(失去焦点lazy)
<body>
    <div id="app">
      <div>
        <span>用户名:</span>
        <span>
          <input type="text" v-model.lazy="uname">
        </span>
        <span>{{tip}}</span>
      </div>
    </div>
    <script>
      /*
        侦听器
        1.采用侦听器监听用户名的变化
        2.调用后台接口进行验证
        3.根据验证的结果调整提示信息
      */
        var vm = new Vue({
            el:"#app",
            data:{
              uname:"",
              tip:""
            },
            methods: {
              checkName: function(uname){
                //调用接口,但是可以使用定时任务的方式模拟接口调用
                //缓存
                var that = this;
                setTimeout(function(){
                  //模拟接口调用
                  if(uname == "admin"){
                    that.tip = "用户名已经存在,请更换一个"
                  }else{
                    that.tip = "用户名可以使用"
                  }
                },1000);
              }
            },
            watch: {
              uname: function(val){
                //调用后台接口验证用户名的合法性
                this.checkName(val);
                //修改提示信息
                this.tip = "正在验证...";
              }
            }
        });
    </script>
</body>

效果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

监听指定数据的变化,当数据发生变化时,触发侦听器所绑定的那个函数,然后在函数中处理异步任务,并且可以随时修改指定状态的变化,满足特殊的场景,处理异步的操作

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值