2

我想知道为什么在此示例中每次输入不能输入多个字符:

http://jsfiddle.net/R3uY4/2/

<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('');
    }  
}
4

2 回答 2

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: ''});
    }
}
于 2013-03-12T21:58:39.867 回答
1

如果您不介意使用 HTML5,您可以使用该autofocus属性。只需将其添加到input字段中。

<li ng-repeat="i in items">{{i.name}} <input ng-model="i.description" autofocus></li>

这是您的 jsFiddle 的一个分支

于 2013-03-12T21:52:53.927 回答