无法使用输入更新v模型

时间:2019-08-18 16:12:53

标签: javascript vue.js vuejs2

我在这样的答案中生成对象:

<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
    }
  })
})

它可以满足我的目标答案,并且可以使用保存的答案正确填充我的输入,但是不幸的是,它没有预期的行为。当我想修改输入时,它不起作用。什么都没填。

为什么?

1 个答案:

答案 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)