2016-03-29 23 views
1

を検証するためにNG-モデルディレクティブでバインドHTML入力フィールドを持つことが必要です。 AngularJsがこのようにこのフォームを検証できないのはなぜですか?

さらに、myForm.myEmail。$無効は、入力をng-modelとバインドする場合にのみ存在します。なぜこれはそうですか?検証が唯一ngModelディレクティブで存在する場合

は、なぜangularjsは私に価値あるmyFormを与える。$無効から?より良い応答はで定義されていません

答えて

2

なぜAngularJsはこのようにこのフォームを検証できないのですか?

これは実際に検証機能を調整し、親フォーム指示コントローラに対応するモデル・コントローラ(ngModelController)を登録することにより、検証機能を可能にするものであるとして検証は、唯一ngModelディレクティブのコンテキストで理にかなっているので。

は、入力ディレクティブが実装されている方法を参照するには、ソースと彼らがngModelコントローラと関係を確認します。https://github.com/angular/angular.js/blob/71cf28cf06295e0936f706c048bc07e6c963acc4/src/ng/directive/input.js#L1708

+0

ngModelがあなたに与えるものを感じ取るには、あなたのフォームでこれを試してください( 'ng-model'を追加した後):' {{myForm.myEmail}} '。 'ng-model'ディレクティブがないと、通常の入力要素には存在しない多くのプロパティがあります。 – Lex

+0

検証がngModelディレクティブのみに存在する場合、なぜangularjsがmyFormの値を与えるのですか?$ invalid to false?より良い応答は未定義ではないでしょうか? –

+0

フォームコントローラには、デフォルトでいくつかの値に初期化されたこれらのプロパティ($ invalid、$ valid、$ touchedなど)があります:https://github.com/angular/angular.js/blob/71cf28cf06295e0936f706c048bc07e6c963acc4/src/ng/directive /form.js#L76。しかし、フォーム内に登録された要素(ngModel)がないため、フォームの検証状態を変更する可能性があります。 – dfsq

0

角度は、モデルではなく、HTMLを検証しているため。モデルにバインドしていない場合、角度に関する限り、検証するものはありません。

関連する問題

 関連する問題