javascript - vue.js动态添加输入v-model不起作用

标签 javascript vue.js input v-model

我用谷歌搜索了一整天,还没有找到解决这个问题的方法。

我尝试构建应用程序,在其中我可以使用 v-model 插入输入,该输入应该是 react 性的,并且此输入的值必须显示在其他 div 元素中。我真正需要的是 拥有一个代码,我可以将带有 v-model 的输入插入到我的 HTML 代码中的任何位置。

这是我的迷你应用程序的示例,除了 v-model 不起作用之外,一切正常,因为我尝试动态插入它。

有人知道如何让它发挥作用吗?

这是代码:

<template>
<div>
<div id="content"></div>
<button type="button" @click="createNew('typeOne')">Create Type One</button>
<button type="button" @click="createNew('typeTwo')">Create Type Two</button>

<h3 style="color:#000000;" id="formTypeOne0">formTypeOne0</h3>
<h3 style="color:#000000;" id="formTypeOne1">formTypeOne1</h3>
<h3 style="color:#000000;" id="formTypeTwo0">formTypeTwo0</h3>
<h3 style="color:#000000;" id="formTypeTwo1">formTypeTwo1</h3>

</div>
</template>

<script>
export default {
data () {
  return {
    formTypeOne0: '',
    formTypeOne1: '',
    formTypeTwo0: '',
    formTypeTwo1: '',
    numberTypeOne: 0,
    numberTypeTwo: 0
  }
},
methods:{
  createNew(type) {
    if (type === 'typeOne') {
      var html = '<input type="text" :value="formTypeOne' + this.numberTypeOne + '" v-model="formTypeOne' + this.numberTypeOne + '">'
      document.getElementById('content').insertAdjacentHTML('beforeend', html)
      this.numberTypeOne = this.numberTypeOne + 1
    } else if (type === 'typeTwo') {
      var html2 = '<input type="text" :value="formTypeTwo' + this.numberTypeTwo + '" v-model="formTypeTwo' + this.numberTypeTwo + '">'
      document.getElementById('content').insertAdjacentHTML('beforeend', html2)
      this.numberTypeTwo = this.numberTypeTwo + 1
    }
  }
},
watch: {
  formTypeOne0: function(val, oldVal) {
    document.getElementById('formTypeOne0').innerHTML = val
  },
  formTypeOne1: function(val, oldVal) {
    document.getElementById('formTypeOne1').innerHTML = val
  },
  formTypeTwo0: function(val, oldVal) {
    document.getElementById('formTypeTwo0').innerHTML = val
  },
  formTypeTwo1: function(val, oldVal) {
    document.getElementById('formTypeTwo1').innerHTML = val
  }
}

}

最佳答案

试试这个代码,它对我有用。这是 HTML:

<template>
<div>
<input id='inputId' type="text" v-model="inputModel">
<button type="button" @click="create()">Create</button>
<div id='division'>  </div>
</div>
</template>

这是方法:

  create () {
    document.getElementById('division').appendChild(
      document.getElementById('inputId')
    )
  }

v-model 在这里适合我。

关于javascript - vue.js动态添加输入v-model不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52761119/

相关文章:

javascript - 如何在每个页面中保留侧边导航菜单

javascript - 所有 .js 文件都以看似随机的十六进制字符开头

javascript - 我如何让 OpenLayers 功能选择和 Javascript 拖放一起工作?

javascript - 如果条件vue js,如何删除数组中的许多数据

javascript - Vue v-bind 的工作原理

html - 为什么 "&lt;input&gt;"元素不发布数据?

javascript - 这个 react native 初始化代码是什么意思?

javascript - 使用索引作为 ID VueJS 的动态模态

php - 具有相同名称的多个文本输入 - 添加到数据库

javascript - 当我想创建多个输入类型时选择文件时出现问题 = 'file'