2016-03-29 2 views
1

Ich mag diesenWarum ist notwendig, binden html Eingabefelder mit ng-Modell Richtlinie habe eine Form

<form name="myForm"> 
    <input name="myEmail" type="email"/> 

    {{myForm.$invalid}} 
</form> 

ich mit ng-Modell meines Eingabefeld binden, muß ein Formular zu validieren das Formular korrekt zu validieren . Warum kann AngularJs dieses Formular nicht einfach so validieren?

Sogar die Eigenschaft myForm.myEmail. $ Ungültig nur vorhanden, wenn ich die Eingabe mit ng-Modell binde. Warum ist das so?

Wenn die Validierung nur mit ngModel Richtlinie gibt, warum AngularJS geben Sie mir den Wert myForm. $ Ungültig-falsch? eine bessere Antwort wäre nicht undefined?

Antwort

2

Warum kann AngularJs dieses Formular nicht einfach so validieren?

Da Validierung macht nur Sinn, in Zusammenhang mit der ngModel Richtlinie, wie das, was tatsächlich ist Fähigkeit Validierung ermöglicht durch entsprechende Modellsteuerung Registrierung (ngModelController) mit übergeordnetem Formular Richtlinie-Controller, die Validierung Funktionalität orchestriert.

die Quelle Überprüfen Sie, wie Eingangs Richtlinien umgesetzt werden und was sie mit ngModel Controller tun: https://github.com/angular/angular.js/blob/71cf28cf06295e0936f706c048bc07e6c963acc4/src/ng/directive/input.js#L1708

+0

Gut gesagt. Um ein Gefühl dafür zu bekommen, was ngModel dir gibt, probiere das in deinem Formular aus (nachdem du 'ng-model' hinzugefügt hast):' {{myForm.myEmail}} '. Es gibt viele Eigenschaften, die auf einem normalen Eingabeelement ohne die 'ng-Modell'-Direktive nicht existieren. – Lex

+0

Wenn die Validierung nur mit der ngModel-Direktive existiert, gibt mir angularjs den Wert myForm. $ Invalid to false? eine bessere Antwort wäre nicht undefiniert? –

+0

Da der Formular-Controller diese Eigenschaften ($ invalid, $ valid, $ berührte, usw.) standardmäßig auf einige Werte initialisiert hat: https://github.com/angular/angular.js/blob/71cf28cf06295e0936f706c048bc07e6c963acc4/src/ng/directive /form.js#L76. Da jedoch keine Elemente (mit ngModel) im Formular registriert sind, kann der Validierungsstatus des Formulars geändert werden. – dfsq

0

Da Winkel das Modell validiert, nicht die html. Wenn Sie nicht an ein Modell binden, gibt es in Bezug auf Winkel keine Validierung.

Verwandte Themen