我有一个表单,当另一个字段被更新时,我需要更新多个其他表单字段。例如,我有一个联系人姓名,根据联系人姓名,我需要更新电子邮件和电话的值。
<template>
<custom-input :value="contact.name" @input="event => contact.name = event.target.value" />
<custom-input :value="contact.phone" @input="event => contact.phone = event.target.value" />
<custom-input :value="contact.email" @input="event => contact.email = event.target.value" />
</template>
<script>
...
props: {
contact: {
type: Object,
required: true
}
},
watch:
"contact.name": function(value) {
if (this.contact.name === "john") {
this.contact.email = "john@email.com"
this.contact.phone = "1111111111"
} else if (this.contact.name === "ed") {
this.contact.email = "ed@email.com"
this.contact.phone = "2222222222"
}
}
}
...
</script>
我知道 Vue 不喜欢这样,因为它将 DOM 与数据模型分开。我的第一个想法是使用$refs,但那些是只读的。这样做的正确方法是什么?
我的另一个想法是设置name和phone计算属性的值。这样做的问题是它不会在父组件的表单上得到监视。
这也可能与我对“双向”绑定的误解有关。我一直认为表单是一种方式,而组件脚本中的数据是另一种方式,而事实并非如此。那么,另一种方法是什么?
我的最后一个想法是我可能不得不发出一个事件?
月关宝盒
相关分类