Ich verwende UI-Router und die folgende Ansicht greift auf den Controller mit der 'Controller As' Syntax. Ich füge die 'ungültige' Klasse dem 'shift'-radios Behälter hinzu. Beim Laden von Formularen können Sie beide Validierungen Nachrichten (für requestDate und shift) sehen. Wenn requestDate und shift sind, werden Validierungsnachrichten verschwinden. Forms $valid
ist wahr. Das einzige Problem ist, dass die "ungültige" Klasse auf dem Radio-Wrapper div bleibt.Was ist falsch mit meiner Verwendung von ng-Klasse?
Was mache ich falsch?
<form novalidate ng-submit="_form.$valid && formCtrl.getFormData()" name="_form">
<div class="datepicker-wrapper clearfix">
<datepicker date-format="yyyy-MM-dd">
<input required ng-model="formCtrl.requestDate" name="requestDate" type="text" />
</datepicker>
</div>
<div ng-messages="_form.requestDate.$error" role="alert">
<div ng-message="required">Введите дату</div>
</div>
<div class="radio-wrapper clearfix" ng-class="{invalid: _form.shift.$error}">
<div ng-repeat="shift in formCtrl.shifts" class="item half-width pull-left">
<label for="<% shift.name %>">
<input required ng-model="formCtrl.currentShift"
name="shift"
ng-value="shift"
id="<% shift.name %>"
type="radio" />
<span class="text"><span ng-bind="shift.text"></span></span>
</label>
</div>
</div>
<div ng-messages="_form.shift.$error" role="alert">
<div ng-message="required">Укажите смену</div>
</div>
<!-- other inputs... -->
</form>
Sollte nicht 'ng-class = "{' invalid ': _form.shift. $ Error}" statt 'ng-class =" {invalid: _form.shift. $ Error} "' (** sein ungültig ** einfach zitiert)? – lealceldeiro
@lealceldeiro Einfache Anführungszeichen um den Klassennamen sind nur erforderlich, wenn der Klassenname einen Bindestrich enthält. – Lex