角度 - 动态创建输入[文本]字段

时间:2015-02-21 12:41:06

标签: angularjs

创建输入[文本]字段时,为其分配ng模型对象。该ngModel在$scope.userName$scope.lastname等范围内进行了硬编码。

我的问题是我有一个点击事件,可以根据需要添加输入字段。这意味着我无法对这些对象进行硬编码。

我所做的是使用范围对象制作数组块...

$scope.example = {
    counter: 0,
    data: []
}
对于在用户单击事件上创建输入字段的每种类型,

counter属性都会递增。所以,ng-model属性就是这样......

ng-model="example.data[example.counter]"

如果用户创建3个输入字段,则会有3个数组值。

问题是这些数组值不会在模型更改时更新。只有第一个输入字段填充在example.data数组中,但填充在第三个(2)索引上。

我做错了什么?此外,是否存在动态创建输入字段的角度方式。这是我的第一个原始尝试,但我有一些想法涉及广播一个更优雅的事件。

2 个答案:

答案 0 :(得分:3)

只需使用ng-repeat,例如:

<input type="text" ng-repeat="myinput in myinputs" ng-model="myinput">
</input>

当你需要新输入时 - 只需为myinputs数组添加新值。

答案 1 :(得分:1)

Petr Averyanov回答非常简单,但它仍然没有将模型绑定到输入值。

我设法这样做......

 <input type="text"
        ng-repeat="data in innerBlock.data track by $index"
        ng-model='innerBlock.data[$index]'>
如果在数组的每个索引中放入相同的值,则

track by $index是必需的。

指令的内容......

scope.example.counter++;
scope.example.data[scope.example.data.length] = '';

我头脑风暴是一种非常复杂的方式,但这太简单了。