【问题标题】:Vuejs does not update my interface, anyone know why?Vuejs 不更新我的界面,有人知道为什么吗?
【发布时间】:2020-08-04 21:54:04
【问题描述】:

我有一个带有 vuejs 的应用程序。我有一个每 10 秒从 API 更新的对象,它还必须在更新时更改 Html(界面)。

我在更新界面时遇到了一些困难,虽然我可以看到控制台中的对象发生了变化,因此我知道它正在发生变化。

这是我的一段代码:

watch: {
  myObj() {
    for (let [key, tuner] of Object.entries(myObj)) {
    ---- some code ----
     }
  }
 },
},
created() {
 setInterval(this.callMyApi(), 10000);
},

我每 10 秒调用一次我的 API,然后我使用 WATCH 属性检查 myObj 何时更改并使用它执行一些逻辑。谁能帮帮我?

【问题讨论】:

  • 欢迎来到 StackOverflow!顺便说一句,您的代码setInterval(this.callMyApi(), 10000); 实际上应该是this.callMyApi(); setInterval(this.callMyApi(), 10000);,因此您立即调用该函数并在此之后每 10 秒调用一次,否则您将在 10 秒后才获得数据...... ????

标签: javascript html vue.js ecmascript-6


【解决方案1】:

这有 2 个组件对于确保观察对象(尤其是嵌套属性)正常工作非常重要。

首先,您必须 A) 通过声明 myObj: {} 将属性实例化为对象或 B) 使用 Vue.set(this, 'myObj', yourCustomObject) 以确保它是反应式的。

其次,如果您的对象包含嵌套对象/数组,则必须使用deep: true

watch: {
  myObj: {
    deep: true, // this is the important part

    handler() {
      // your code
    }

  }
}

【讨论】:

  • 这对我不起作用。 Vue.set 总是给我一个错误不知道为什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 2013-05-30
  • 2019-01-05
  • 1970-01-01
相关资源
最近更新 更多