[英]AngularJS - ngRepeat and ngMessages
我努力使ngMessages在ngRepeat循环中工作。 请考虑以下示例:
<form name="$ctrl.demoForm.$fc" novalidate>
<div ng-repeat="tag in $ctrl.demoForm.tags track by $index">
<div>
<label>Tag:</label>
<input name="tag{{$index}}" ng-model="tag.value" type="text" ng-pattern="/^[a-z]*$/">
<button ng-click="$ctrl.removeTag($index)">Remove</button>
</div>
<ng-messages for="$ctrl.demoForm.$fc['tag'+$index].$error">
<ng-message when="pattern">Must only contain letters.</ng-message>
</ng-messages>
</div>
<button ng-click="$ctrl.addTag()">Add new tag</button>
</form>
我只是简单地遍历$ctrl.demoForm.tags
存储的标签数组。 我知道ng-repeat每次迭代都会创建一个新作用域,因此每个标签都是一个{value: 'tag value'}
类的对象。
这是与控制器相关的非常基本的内容:
app.controller('DemoCtrl', function() {
this.demoForm = {
tags: [
{value: 'tag 1'},
{value: 'tag 2'}
]
};
this.addTag = function(){
this.demoForm.tags.push({value: ''});
};
this.removeTag = function(index) {
if (this.demoForm.tags.length > index) {
this.demoForm.tags.splice(index, 1);
}
};
});
它工作正常,我可以正常添加和删除标签。 但是,当字段有错误时,就会出现问题。 如果您尝试删除出现错误的字段上方的字段,则会弄乱它们的值。
奇怪的是,实际字段实际上已被删除,错误时只有它们的值似乎不同步。 我在jsbin中添加了一个id
属性来说明问题,您可以在这里找到它:
http://jsbin.com/nifipatojo/edit?html,js,output
有谁知道会发生什么?
谢谢你的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.