繁体   English   中英

AngularJS-ngRepeat和ngMessages

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM