输入字段在嵌套的 AngularJS 重复中失去焦点
Input field losing focus in nested AngularJS repeat
我对嵌套的角度列表有一些奇怪的行为。在我键入的第一个字母后,焦点立即丢失。
外部重复是属性列表,由属性名称(不是索引)标识。内部重复是属性的子数组,由索引标识。
显示和装订按预期工作,但是当我更改某些内容(例如插入字母)时,焦点丢失,我无法键入另一个字母或任何东西。我必须再次单击该字段。
<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>
一些可能有用的其他信息:
- 此代码段通过 ng-include 包含在表单中
- 我在文本区域上得到相同的行为
- 元数据包含有关对象属性(也是数据类型等)的数据,但实际值在配置本身中
这个问题可以通过在所有ng重复中使用"按$index跟踪"来避免。
原因是如果内容发生变化,angularjs 仍然会知道它是同一个对象,因为 Angular 通过项目(键、值)在数组中的位置跟踪它们。
当(键,值)发生变化时,没有$index跟踪,随着"值"的变化,它被视为一个新对象,这引入了焦点松散(元素被破坏然后由angularjs重新创建)。
<input data-ng-repeat="subKey in configuration[key]"
data-ng-model="configuration[key][$index]"
这是非常奇怪的,可能是错误的。 即通过键入 smth,您可以更改配置[键][0],从而更改第一个子键...
我猜你的意思是这样的:
<input data-ng-repeat="subKey in configuration[key]"
data-ng-model="subKey.value"
type="text"
name="{{subKey.name}}">
带模型
$scope.configuration = {
metaData : {
test : 'test'
},
test : [{ name : 'a', value : 'aa'}, { name : 'b', value : 'bb'}]
}
http://plnkr.co/edit/IwDS3141BWcv9t5BcAka?p=preview
相关文章:
- Javascript游戏输入失去焦点
- 如何使元素在按下按钮时不会失去焦点
- 在输入上失去焦点()
- 如何在没有科尔多瓦插件的情况下隐藏软键盘,也不会失去焦点
- ExtJS5 菜单面板在面板失去焦点时消失
- Javascript弹出窗口在某些情况下失去焦点
- 按下esc键或随机单击鼠标时,Jcrop失去焦点
- 当我失去焦点时,不会触发ng模糊
- JavaScript代码在失去焦点时停止
- 文本框在滚动时在模式中失去焦点
- 任何防止在从 tinymce 容器中单击输入文本时失去焦点的方法
- 按键事件在文本输入失去焦点并再次获得焦点后自动触发
- 获取页面事件,选项卡关闭,失去焦点
- DIV 在单击其中的元素时失去焦点
- 如何在内容可编辑元素中的文本失去焦点时保持该元素处于选中状态
- 为什么欧芹不验证每个字段(例如失去焦点),而我调用$('#myForm').validate();
- 以 jQuery 为中心的文本框在 Safari 中输入一个字符后失去焦点
- jQuery 图像推子不会在窗口失去焦点时停止
- ASP.NET 文本框不会失去焦点
- 在调用窗口模糊(浏览器失去焦点)时避免元素模糊处理程序