【发布时间】:2020-08-20 09:26:51
【问题描述】:
我有一个 Vue 组件,它根据 API 获取的数据创建许多输入。我通过一种方法运行 JSON 中的值,如果某个条件匹配,该方法又将此值转换为输入字段。这是我的组件的外观:
<template>
<div>
<div v-for="(val, index) in data">
<span>{{val.key}}</span>
<span :inner-html.prop="checkForEdit(val)"></span>
</div>
<b-button @click="submitData">Save</b-button>
<div>
</template>
export default {
name: "SomeComp",
data() {
return {
dynamicVars: {}
}
},
methods: {
...mapActions("api", ["getData"]),
checkForEdit(value) {
if(!value) return '';
if(value.mustEdit) {
this.dynamicVars[value.key] = '';
return '<input type="text" value= "'+ value.text +'" :model='+ this.dynamicVars[value.key]+'>';
} else {
return value.text;
}
},
submitData() {
console.log(this.dynamicVars); //Only the key is present, no value updated
}
},
created() {
this.getData();
},
computed: {
...mapState("api", ["data"]),
}
};
数据如下所示:
[
{key: 'name', text: 'John', mustEdit: false},
{key: 'age', text: '100', mustEdit: true}
]
这个数据可以是任何东西,字段不是固定的,只有格式是固定的。所以我想动态创建动态 vars 对象以发送到保存它的 API。
现在它只在dynamicVars 内创建变量,但是当我更改字段值时它似乎并没有真正做出反应。
【问题讨论】:
标签: javascript vue.js vue-component templating v-model