首页 > 解决方案 > 从观察变量中获取数据

问题描述

我有一个初学者问题。也许我只是太愚蠢了。

情况:我有一个界面,可以通过滑块设置闹钟定时器值。每次更新值时,都会将其写入文件。但是当我设置一个间隔时,我无法从回调函数访问被监视的变量,请参阅 timeCallback()。

Vue.component('alarm-comp', {
  data: function() {
    return {
      data: {
        wakeup: {
          text: "Get up",
          time: 30, //timeout
        },
        ...
      },
      test: "test",
      ...
    },
  watch: {
    data: {
      handler(val) {
        this.saveSettings(); 
      },
      deep: true
    }
  },
  mounted: function() {
    this.readSettings();
    setInterval(() => {this.timerCallback()}, (this.data.wakeup.time) * 1000); // -> time correctly set
  },
  methods: {
    timerCallback() {
      console.log(this.test); // -> test
      console.log(this.data.wakeup.time); // -> undefined
    },
  }

标签: javascriptvue.js

解决方案


我从昨天开始就试图弄清楚,由于某种原因,你的代码没有执行挂载的钩子,我只是复制你的代码(在观看之前缺少一个右括号,可能只是示例代码)并意识到如果你更改已安装的其他钩子,例如创建,这我会触发并且我会工作,至少在我的示例中。

created() { this.readSettings(); setInterval(() => {this.timerCallback()}, (this.data.wakeup.time) * 1000); }

你真的需要挂载的钩子,还是你可以改成created的?


推荐阅读