如何在页面加载后启动观察程序。

时间:2018-02-12 15:05:22

标签: vue.js vuejs2

我有一个调用类似

的方法的观察者
watch: {
  'list.items' (n, o) {
     this.doSomething()
   }
}

问题是,无论何时加载页面,我都会将新值推送到list.items中:

methods: {
  fetchLists(){
    axios.get('/').then(
      res =>  {
       this.items.push(res.data) 
    };
  }
}

我将fetchLists调用为:

created () {
  this.fetchLists()
}

这里的问题是,当list.items发生变化时,当页面加载时,观察者会调用this.doSomething(),但我不想让观察者在初始页面加载后调用doSomething

1 个答案:

答案 0 :(得分:3)

您可以在hasLoaded中定义要测试的布尔数据项watch,并在完成提取时设置它,或者在提取完成后使用this.$watch,而不是在组件中设置watch条目。

看起来像

this.$watch('list.items', (n, o) => {
  this.doSomething();
});