如何使用vue js检查组件本身的数据何时发生变化?

Posted

技术标签:

【中文标题】如何使用vue js检查组件本身的数据何时发生变化?【英文标题】:How to check when data changes in component by itself with vue js? 【发布时间】:2018-05-27 19:48:48 【问题描述】:

我有自己改变数据的方法,简单的例子:

Vue.component('component', 
  template: '#component',
  data: function () 
    return 
      dataToBeWatched: ''
    
  ,
  methods: 
    change: function (e) 
      var that = this;
      setTimeOut(function() 
        that.dataToBeWatched = 'data changed';
      , 2000);
    ,
    makeSmthWhenDataChanged: function () 
      // ajax request when dataToBeWatched changed or when dataToBeWatched isn't empty
    
  
);

如何使用正确的方法 vue js 创建这样的观察者? 或者我需要在组件中使用道具观看它?

【问题讨论】:

【参考方案1】:

Vue 组件可以有一个 watch 属性,它是一个对象。对象键需要是需要监视的道具或数据的名称,值是数据变化时调用的函数。

https://vuejs.org/v2/guide/computed.html#Computed-vs-Watched-Property

Vue.component('component', 
  template: '#component',
  data: function () 
    return 
      dataToBeWatched: ''
    
  ,
  methods: 
    change: function (e) 
      var that = this;
      setTimeOut(function() 
        that.dataToBeWatched = 'data changed';
      , 2000);
    ,
    makeSmthWhenDataChanged: function () 
      // ajax request when dataToBeWatched changed or when dataToBeWatched isn't empty
    
  ,
  watch: 
      dataToBeWatched: function(val) 
          //do something when the data changes.
          if (val) 
              this.makeSmthWhenDataChanged();
          
      
  
);

【讨论】:

非常感谢,我知道应该很简单!

以上是关于如何使用vue js检查组件本身的数据何时发生变化?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 Angular 中的 @Input() 值何时发生变化?

Vue 检查异步组件何时加载

Vue.js组件之间的通信

如何在 Vuex 商店的 Vue.js 组件中设置动态样式

如何知道 vue.js 中何时加载了所有子组件

VUE