Javascript v-如果对象更新时未在子组件上更新
我有一个Form类,它包含一个errors对象和一个clearError方法,当输入被更新时,错误消息会在按下键后消失不起作用的是,如果我只删除一个属性,则帮助文本不会在按下键时消失 精简: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
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);