账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    使用vue watch 监听对象,如何获取当前发生变化的属性?
    29
    0

    问题如题,不是监听对象的某一个值,是想获得当前发生变化的属性

    问题出现的环境背景及自己尝试过哪些方法

    以下这种写法已经尝试过,会监听比较多的对象属性,所以脑洞大开想能否监听当前变化直接进行处理
    'rooms.a.b'(oldval,newval){

       .... 

    }

    'rooms.a.c'(oldval,newval){

       .... 

    }

    'rooms.b.a'(oldval,newval){

       .... 

    }

    相关代码

    rooms: {

        handler(val) {
          
          this.scrollDown();
          if (!this.currentRoom) return;
         
    
          try {
            sessionStorage.setItem(this.currentRoom, JSON.stringify(content));
          } catch (oException) {
            if (oException.name === 'QuotaExceededError') {
              layer.msg('超出本地存储限额,将清空本地记录!');
    
              //如果历史信息不重要了,可清空后再设置
              sessionStorage.removeItem(this.currentRoom);
              this.rooms[this.currentRoom].historyContent = [];
            }
          }
        },
        deep: true
      },
    

    你期待的结果是什么?实际看到的错误信息又是什么?

    因为需要监听的对象的属性比较多,所以想直接监听对象,获取当前发生变化的属性进行操作,是否可行?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在Vue中,你可以使用watch方法来监听对象的变化。以下是一个简单的例子,它会监听一个对象的属性name的变化:

      ```javascript // 我们首先创建一个对象 var obj = { name: 'John', age: 30 };

      // 然后,我们使用watch方法来监听name属性的变化 obj.$watch('name', function(newName) { console.log('The name of the object has changed to: ' + newName); }); ```

      在这个例子中,每当name属性发生变化时,watch方法都会被调用,并打印出新的name值。

      如果你想获取当前发生变化的属性,你可以使用this.$data来获取当前正在监听的元素。例如:

      ```javascript // 我们首先创建一个对象 var obj = { name: 'John', age: 30 };

      // 然后,我们使用watch方法来监听name属性的变化 obj.$watch('name', function(newName) { console.log('The name of the object has changed to: ' + newName); });

      // 然后,我们使用this.$data来获取当前正在监听的元素 console.log(this.$data.name); // 输出:John ```

      在这个例子中,this.$data会包含所有正在监听的元素的引用。当你使用this.$data来访问属性时,它会自动获取当前正在监听的元素的属性。

    • AD桔 普通会员 2楼

      在Vue中,你可以使用watch方法来监听对象的变化。以下是一个简单的例子,它会监听一个对象的属性name的变化:

      ```javascript // 我们首先创建一个对象 var obj = { name: 'John', age: 30 };

      // 然后,我们使用watch方法来监听name属性的变化 obj.$watch('name', function(newName) { console.log('The name of the object has changed to: ' + newName); }); ```

      在这个例子中,每当name属性发生变化时,watch方法都会被调用,并打印出新的name值。

      如果你想获取当前发生变化的属性,你可以使用this.$data来获取当前正在监听的元素。例如:

      ```javascript // 我们首先创建一个对象 var obj = { name: 'John', age: 30 };

      // 然后,我们使用watch方法来监听name属性的变化 obj.$watch('name', function(newName) { console.log('The name of the object has changed to: ' + newName); });

      // 然后,我们使用this.$data来获取当前正在监听的元素 console.log(this.$data.name); // 输出:John ```

      在这个例子中,this.$data会包含所有正在监听的元素的引用。当你使用this.$data来访问属性时,它会自动获取当前正在监听的元素的属性。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部