绑定输入在angularjs中未聚焦

时间:2014-02-17 12:30:16

标签: angularjs angularjs-ng-repeat

我使用angularjs运行这个简单的代码:

HTML:

<div ng-app ng-controller="AController">
    <code>{{ itemsInArray }}</code>
    <div ng-repeat="item in itemsInArray">
        <input ng-model="itemsInArray[$index]" />
    </div>
</div>

JavaScript:

function AController($scope) {
    $scope.itemsInArray = ["strA", "strB", "strC"];
}

当索引到数组时,绑定似乎正常工作但输入一个字符后输入失去焦点 你可以在这个小提琴上找到工作代码:http://jsfiddle.net/QygW8/

3 个答案:

答案 0 :(得分:3)

我认为这种情况正在发生,因为你正在操纵在ng-repeat上迭代的同一个项目。因此ng-repeat会看到项目发生变化并重新运行`ng-repeat,重新生成项目。

如果你看一下你的小提琴html,你可能会注意到这种效果。

为了让它成功,你可以采取一种方法

http://jsfiddle.net/cmyworld/CvLBS/

将数组更改为对象数组

$scope.itemsInArray = [{data:"strA"}, {data:"strB"}, {data:"strC"}];

然后绑定到item.data

答案 1 :(得分:0)

尝试更改模型:

<div ng-repeat="item in itemsInArray">
    <input ng-model="item" />
</div>

答案 2 :(得分:0)

甚至是angularjs的新手,直到我的发现ng-repeat更新/重复并在模型发生变化时重新创建整个HTML元素。因此,当添加到模型中的单个字符导致ng-repeat响应并再次创建所有HTML元素时,会导致失去焦点。

这是一个小提琴,你可以在其中观察ng-repeat内和ng-repeat外的模型的变化。

抱歉,我没有解决方案,希望使用ng-change分开ng-model可能有所帮助。