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



创建input[text]字段时,为其分配一个ngModel对象。该ngModel在作用域中进行硬编码,如$scope.userName$scope.lastname

我的问题是,我有一个点击事件,它会根据需要添加输入字段。这意味着我不能硬编码那些对象。

我所做的是使它们成为数组块,带有scope对象。。。

$scope.example = {
    counter: 0,
    data: []
}

在用户单击事件上创建输入字段的每种类型,counter属性都将递增。所以,ng-model属性应该是这样的。。。

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

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

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

我做错了什么?此外,是否有一种动态创建输入字段的角度方法。这是我的第一次尝试,但我有几个想法,涉及到广播一个更优雅的活动。

只需使用ng repeat,如:

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

当你需要新的输入时,只需在myinputs数组中添加新的值。

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] = '';

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

最新更新