【发布时间】:2019-09-18 03:42:39
【问题描述】:
我有多个表单组件,每个表单都是一个组件。现在,我想使用相同的组件来添加数据和编辑数据。所以我想做的是,当 Post 组件收到一个包含数据的道具时,这意味着它处于“编辑模式”并用其数据填充字段,如果不是,它处于“创建模式”。 那么我应该如何在我的表单域中使用 v-model 呢?
我是否应该将每个表单字段 v-model 为一个计算属性(它有一个 getter 和一个 setter),并且计算属性会检查 data 属性是否为空,如果不使用它的数据来填充字段?并在计算属性set方法中更新prop?
父组件
<post :data.sync="dataObject"></post>
子(帖子)组件
<template>
<div>
<form>
<input type="text" label="title" v-model="computedTitle" />
<input type="text" label="message" v-model="computedMessage" />
</form>
</div>
<input type="button" @click="submitted"
<template>
<script>
export default {
data(){
return{
post:{
title:null,
message:null
}
}
},
props:["data"],
computed:{
computedTitle:{
get(){
return data ? data.title : ''
},
set(computedTitle){
computedTitle = computedTitle // trying to update computed property value with the field value...
}
},
computedMessage:{...}
}
}
</script>
【问题讨论】:
-
或者我应该使用我的 data() 进行 v-model 并观察 data 属性,如果它不为空,则将其值分配给 data() ?
标签: forms vuejs2 components communication