javascript 如何从外部代码更新Vue应用程序中的引用?

f2uvfpb9  于 12个月前  发布在  Java
关注(0)|答案(1)|浏览(87)

我目前正在编写类似于下面的代码,试图创建一个简单的倒计时计时器:

const {createApp, ref} = Vue

const app = createApp({
    setup(_, { expose }) {
        const timer = ref("00:00")
        return {
            timer
        }
    }
})

document.addEventListener("DOMContentLoaded", () => {
    app.mount('#app')

    let remaining = 60 * 12
    setInterval(()=>{
        console.log("interval")
        if (remaining <= 0) return;
        remaining--
        const minutes = remaining/60
        const seconds = remaining % 60
        app.timer = `${Math.trunc(minutes).toString().padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`
    }, 1000);
})

我遇到的问题是,我根本无法让应用程序更新打印的值(如果我将增量代码移动到设置中,它就可以工作,但我想避免这种情况)。我不知道该怎么做才最干净。我在一个electron应用程序中使用Vue,我希望最终将vue代码连接到从主进程传递的消息。

sg2wtvxw

sg2wtvxw1#

app是应用程序对象而不是根组件示例,它在Vue 2中扮演的角色与Vue相同。
它应该是:

const instance = app.mount('#app')
...
instance.timer = ...

除非Vue应用程序是无法修改的第三方代码,否则将所有相关逻辑(setInterval等)移动到应用程序内部并公开公共方法以与页面交互是一个很好的做法。

相关问题