javascript - 如何使用递增的 ng-model 动态创建多个表单输入字段?

标签 javascript angularjs

阅读后this article ,我了解了如何使用 ng-repeat 动态添加表单字段。

我想知道如何使用递增的 ng-model 值动态创建多个表单元素。

例如,以下内容将通过单击按钮创建。

<input ng-model="vm.foo.bar1.first">
<input ng-model="vm.foo.bar1.second">
<input ng-model="vm.foo.bar1.third">
<input ng-model="vm.foo.bar1.fourth">

<input ng-model="vm.foo.bar2.first">
<input ng-model="vm.foo.bar2.second">
<input ng-model="vm.foo.bar2.third">
<input ng-model="vm.foo.bar2.fourth">

<input ng-model="vm.foo.bar3.first">
<input ng-model="vm.foo.bar3.second">
<input ng-model="vm.foo.bar3.third">
<input ng-model="vm.foo.bar3.fourth">

如何做到这一点?

最佳答案

我建议重组您的 ViewModel 以使 vm.foo.bar 成为一个数组。那么这将是微不足道的:

<div ng-repeat="item in barItems">
  <input ng-model="vm.foo.bar[$index].first">
  <input ng-model="vm.foo.bar[$index].second">
  <input ng-model="vm.foo.bar[$index].third">
  <input ng-model="vm.foo.bar[$index].fourth">
</div>

或者,如果你坚持的话,也可以

<div ng-repeat="item in barItems" ng-init="outerIdx = $index">
   <input ng-repeat='p in ["first", "second", "third", "fourth"]' 
          ng-model="vm.foo.bar[outerIdx][p]">
</div>

(我在这里假设,与 firstsecond 等不同...,bar 的数量不是已知 - 因此数组是更好的选择)

编辑:

如果你真的想要,你也可以使 vm.foo 成为一个包含属性 bar1bar2 等的对象:

<div ng-repeat="item in [1, 2, 3, 4]">
  <input ng-model="vm.foo['bar' + item].first">
  <input ng-model="vm.foo['bar' + item].second">
  <input ng-model="vm.foo['bar' + item].third">
  <input ng-model="vm.foo['bar' + item].fourth">
</div>

但不要忘记首先在 Controller 中创建 vm.foo 对象:

this.foo = {};

关于javascript - 如何使用递增的 ng-model 动态创建多个表单输入字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28288712/

相关文章:

javascript - 防止 UglifyJS 更改函数参数的名称

angularjs - 将 jshint 与 AngularJS 和 Controller 一起使用

angularjs - 水平滚动条永远可见

javascript - javascript中具有公共(public)回调的类

javascript - 在带有 View (路由)的 AngularJS 中,为什么 Controller 只向前执行?

javascript - 带有自定义分隔符的 Angularjs 静态数字过滤器

php - 提交(); Mac 的 IE/Safari/FF 中的问题

javascript - 使用 WinJS 在 Windows Metro 中进行优雅的异常处理

javascript - 检查是否选中了组的任何单选按钮

javascript - 如何在 iOS UIWebView 中缩放 iFrame