vue.js - 如何在 Vue 2 中为输入设置动态 v-model 并为此 v-model 设置值
问题描述
我有一个用于创建动态输入字段的组件。我有一个道具 - 字段。
fields: [
{
label: 'Question Text',
placeholder: 'Enter Text',
isRequired: true,
editable: true,
name: 'question',
value: '123',
},
{
label: 'Button Text',
placeholder: 'Enter Text',
isRequired: true,
editable: true,
name: 'button',
value: '',
},
],
比我将它传递给组件 SettingsViewFields.vue
<template>
<div>
<e-form-group v-for="(field, index) in fields" :key="index" :error="getInputError[field.name]">
<template v-slot:label>
{{ field.label }}
</template>
<e-textarea
v-model="form[field.name]"
:name="field.name"
size="small"
@input="onInput($event, field.name)"
></e-textarea>
</e-form-group>
</div>
</template>
<script>
export default {
name: 'SettingsViewFields',
props: {
fields: {
type: Array,
default: () => [],
},
},
data: () => ({
form: [],
}),
};
</script>
我想要来自 field.name 的输入调用的反应数据,反应数据将是表单:{question: '', button: ''} 但问题我必须为输入设置正确的值,但如果我设置 field.name该值将不正确,因为对于第一次输入它的值:'123'。
解决方案
您不能直接更改父组件传递的数据,当您从父组件收到要更新的道具数据时,您可以对此进行复制,例如
computed: {
fieldsCopy: function () {
return this.fields
},
}
并在您的模板中使用 fieldsCopy ,这可能会起作用。如果您还想将更新的数据传递给 parent,请使用emit。
推荐阅读
- java - 像这里的示例一样,能够访问对象的字段的“坏”或“问题”是什么
- java - 如何将对象 arrayList 解析为字符串数组?
- python - python timeit 的意外缩进
- python - 计算范围内的出现次数
- tensorflow - 谷歌 Colab 操作系统?
- sql - 插入具有自定义格式和来自其他函数的值的行
- android - 如何使用其他网络上的 opencv python 脚本访问我的 android 相机
- json - POST 请求的 JSON 正文
- redux - Redux store 设置为默认值,当我们刷新页面时
- postgresql - 错误 WKB 结构与预期大小不匹配