创建输入[文本]字段时,为其分配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)索引上。
我做错了什么?此外,是否存在动态创建输入字段的角度方式。这是我的第一个原始尝试,但我有一些想法涉及广播一个更优雅的事件。
答案 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] = '';
我头脑风暴是一种非常复杂的方式,但这太简单了。