创建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] = '';
我用一种非常复杂的方式进行头脑风暴,但这太简单了,太棒了。