0

我在这个toppic描述相同的问题: Angular JS ng-message inside directive角NG的消息里面NG重复错误的行为

可惜的是,解决办法是不是为我工作,因为我使用的内部纳克我的自定义指令-重复。所以现在只有当所有输入都满足错误条件时,ng-messages才能工作。

http://plnkr.co/edit/lJT48bmYvR9DGFliIYDH?p=preview

我曾尝试创建NG的消息条件很多方面,但没有工作正常。他们两个你可以在上面plunker:

ng-messages="form.doubleInputLeft.$error" 
ng-messages="form['doubleInputRight' + $index].$error" 

请帮助我, 问候

+1

请不要在'ng-'前面加上指令名称的前缀。该前缀是为核心指令保留的。有关更多信息,请参阅[AngularJS Wiki - 最佳实践](https://github.com/angular/angular.js/wiki/Best-Practices)。 – georgeawg

回答

1

对于input元素添加到ng-repeat内工作,该指数必须作为name属性的一部分。

<!-- index must be included in the name attribute -- 
    <input name="doubleInputLeft" class="form-control ngMessageSample" type="{{inputType}}" ng-model="modelLeft" ng-minlength="2" ng-maxlength="20" required> 
    --> 
    <input name="doubleInputLeft{{index}}" class="form-control ngMessageSample" type="{{inputType}}" ng-model="modelLeft" ng-minlength="2" ng-maxlength="20" required> 
    <div ng-messages="form['doubleInputLeft'+index].$error" class="ngMessagesClass" ng-messages-multiple> 
     <div ng-message="minlength" class="ngMessageClass"> {{leftInputHeading}} must have at least 2 characters.</div> 
     <div ng-message="maxlength" class="ngMessageClass"> {{leftInputHeading}} must have at most 20 characters.</div> 
    </div> 

否则,重复的元素将具有重复的名称。

DEMO on PLNKR

+0

非常感谢你@georgeawg。这是我想到的最后一件事。我也会改变指令名称。 Regads和再次感谢! – www