角度输入限制为1个字符

时间:2013-03-12 21:35:00

标签: angularjs

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

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

2 个答案:

答案 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>

这是fork of your jsFiddle