javascript - 如何在vuejs中动态添加文本框并设置唯一的v模型?

标签 javascript jquery html vuejs2

让我们从我的代码开始:

<button v-on:click="addTextbox">Add</button>

<div id="container">
<div class="row">
    <div class="input-field col s12 m12 l12">
        <input id="full_name" type="text" v-model="full_name">
    </div>
</div>
</div>

这基本上就是代码。它输出一个文本框,我想做的是每当我单击添加按钮时,它都会自动生成整个 html(从 <div class="row"></div> )。

所以我研究并尝试了这个:

addTextbox: function() {
   var container = document.getElementById("container");
   var input = document.createElement("input");
   input.type = "text";
   container.appendChild(input);
}

它添加了一个文本框,但我在这里遇到问题:

首先,它只创建一个新的文本框,但我需要它来创建整个行 div。

第二是我希望每个文本框都有一个唯一的 v-model 。例如第一个是 v-model="full_name"当我添加一个新的时,它应该是这样的:

<div id="container">
<div class="row">
    <div class="input-field col s12 m12 l12">
        <input id="full_name" type="text" v-model="full_name">
    </div>
</div>

<div class="row">
    <div class="input-field col s12 m12 l12">
        <input id="full_name2" type="text" v-model="full_name2">
    </div>
</div>
</div>

有办法做到这一点吗?预先感谢您。

最佳答案

这不是在 vue.js 中执行此操作的正确方法。

对于动态行,我会循环遍历这样的数组:

<button v-on:click="addRow">Add</button>

<div id="container">

  <div class="row" v-for="row in rows">
    <div class="input-field col s12 m12 l12">
      <input type="text" value="{{row.full_name}}">
    </div>
  </div>

</div>

rows = [{full_name: "john doe"}, {full_name: "jane doe"}]

addRow: function() {
  this.rows.push({full_name: ""});
}

关于javascript - 如何在vuejs中动态添加文本框并设置唯一的v模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42126174/

相关文章:

jquery - 如何使用 hasOwnProperty 并在嵌套 JSON 中检索其值

html - 如何设置偶数和奇数元素的样式?

javascript - 如何在 Eclipse 中为 JavaScript 项目的 DOM 启用代码辅助

javascript - Chrome 开发者工具中是否有 "pause animation"功能的键盘快捷键? (F12)

javascript - 随机颜色 jquery 框

javascript - 如何克隆具有新id的元素?

javascript - 非专辑字符中包含的字符串的正则表达式单词边界

javascript - 如何根据ReactJS中状态变量的值分配CSS类

javascript 运行时错误保存/恢复

javascript - slider 覆盖 slider 后的内容。为什么?