Javascript v-如果对象更新时未在子组件上更新

Javascript v-如果对象更新时未在子组件上更新,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我有一个Form类,它包含一个errors对象和一个clearError方法,当输入被更新时,错误消息会在按下键后消失不起作用的是,如果我只删除一个属性,则帮助文本不会在按下键时消失 精简: class Form { clearError(field = null) { if (!field) { this.formErrors = {}; return; } delete this.fo

我有一个Form类,它包含一个errors对象和一个clearError方法,当输入被更新时,错误消息会在按下键后消失不起作用的是,如果我只删除一个属性,则帮助文本不会在按下键时消失

精简:

class Form {

    clearError(field = null) {
        if (!field) {
            this.formErrors = {};
            return;
        }

        delete this.formErrors[field];
    }

    hasError(field) {
        return this.formErrors[field] !== undefined;
    }
}
在我的输入帮助组件中,我有:

<span v-if="form.hasError(field)" v-text="form.getError(field)"></span>

以我的主要形式,我有:

<form @keydown="form.clearError($event.target.name)">
...
<input-help :form="form" field="email"></input-help>

...
如果我清除了所有(
form.clearror()
)中的formErrors,v-if就可以正常工作,但如果我只清除了formErrors上的一个属性(
form.clearror('email')
)。我假设我遇到了某种缓存

我已经记录了
$event.target.name
,它工作正常,并且我可以在Vue开发工具中看到
formErrors.email
属性已被删除,但帮助文本仍然保留,因为v-if(在输入帮助中)未正确计算值的更改


你知道我怎样才能正确地进行v-if更新吗?我不想清除所有错误,我只想清除与修改的输入相关的错误。

您需要告诉Vue您正在尝试删除Vue不知道的属性。所以不是

delete this.formErrors[field];
使用


嘿,我不确定这是否有什么帮助,但这里有一个示例repo,基本上是您试图实现的。谢谢,这确实有效,但使我的类依赖于Vue。我猜这对这个应用程序没问题。
this.$delete(this.formErrors,field)
也应该可以。
Vue.delete(this.formErrors, field);