我想知道为什么在这个例子中我不能为每个输入输入多个字符:
<div ng-app>
<div ng-controller="ctrl">
<table>
<tr>
<td ng-repeat="f in foo">
<input ng-model="foo[$index]" style="width:60px" ></input>
</td>
</tr>
</table>
</div>
</div>
JS:
function ctrl($scope) {
$scope.foo = [];
for (var i=0; i<5; i++) {
$scope.foo.push('');
}
}
答案 0 :(得分:4)
您正在将模型绑定到基元。它不能那样工作。完整解释github issue。此外,每次更改输入值时,ng-repeat都会刷新。这就是你失去焦点的原因。
始终绑定到对象:
HTML:
<td ng-repeat="f in foo">
<input ng-model="f.value" style="width:60px" />
</td>
控制器:
function ctrl($scope) {
$scope.foo = [];
for (var i=0; i<5; i++) {
$scope.foo.push({value: ''});
}
}
答案 1 :(得分:1)
如果您不介意使用HTML5,可以使用autofocus
属性。只需将其添加到input
字段即可。
<li ng-repeat="i in items">{{i.name}} <input ng-model="i.description" autofocus></li>