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