我使用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/
答案 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可能有所帮助。