我对嵌套的角度列表有一些奇怪的行为。在输入第一个字母后,焦点立即丢失。
外部重复是属性列表,由属性名称(不是索引)标识。内部重复是属性的子数组,由索引标识。
显示和绑定按预期工作,但是当我改变某些内容时,例如插入一个字母,焦点丢失,我不能输入另一个字母或任何东西。我必须再次点击该字段。
<div data-ng-repeat="(key, value) in configuration.metaData">
<label>{{key}}</label>
<input data-ng-repeat="subKey in configuration[key]"
data-ng-model="configuration[key][$index]"
type="text"
name="{{subKey}}">
</div>
可能有用的一些其他信息:
答案 0 :(得分:1)
for line in filehandle:
这很奇怪,可能是错的。即通过键入smth,您可以更改配置[key] [0],从而更改第一个subKey ...
我猜你的意思是这样的:
<input data-ng-repeat="subKey in configuration[key]"
data-ng-model="configuration[key][$index]"
带模型
<input data-ng-repeat="subKey in configuration[key]"
data-ng-model="subKey.value"
type="text"
name="{{subKey.name}}">
答案 1 :(得分:1)
在所有ng-repeats中使用'track by $ index'可以避免这个问题。
原因是如果内容发生变化,angularjs仍然会知道 它是同一个对象,因为angular通过它们在数组中的位置跟踪项目(键,值)。
当(键,值)改变,没有跟踪$ index时,随着“值”的改变,它被认为是一个新的对象,它引入了松散的焦点(元素被破坏然后由angularjs重新创建)。 p>