我在这样的答案中生成对象:
<el-input :id="'question_' + question.id" v-model="answers[question.id]"></el-input>
...当我填写输入内容时会给出以下输出:
Answers: object
{
"19":"Hello",
"20":"Test",
"22":"04718810200",
"26":"Belgium"
}
当用户返回页面时,我希望他们看到他们的答案。我在axios
电话中这样收集它们:
axios.get('/bilan/' + this.$route.params.id).then(response => {
this.questions = response.data.data
this.questions.questions.forEach(question => {
if (question.answer) {
this.answers[question.id] = question.answer.answer
}
})
})
它可以满足我的目标答案,并且可以使用保存的答案正确填充我的输入,但是不幸的是,它没有预期的行为。当我想修改输入时,它不起作用。什么都没填。
为什么?
答案 0 :(得分:1)
正如@skirlte所说,有change detection caveats。
由于JavaScript的限制,Vue无法检测以下内容 更改为数组:
直接用索引设置项目时,例如
vm.items[indexOfItem] = newValue
。当您修改长度时 阵列,例如vm.items.length = newLength
。 因此,更改以下代码:
this.answers[question.id] = question.answer.answer
到
this.$set(this.answers, question.id, question.answer.answer)