13

私が持っているフォームのデフォルトの検証は期待どおりに機能します。ただし、ユーザーが有効な電子メール アドレスと 3 文字以上のパスワードを入力しても、ログイン資格情報が有効であるとは限りません。

だから私の質問は:

サーバー側の検証後にモデルの電子メールパスワードを無効 に設定するにはどうすればよいですか。これにより、入力フィールドは ng-valid ではなくクラス ng-invalid を取得します。

私の現在のコード

function IndexCtrl( $scope, $http )
{
  $scope.form = {};
  $scope.submitLogin = function ()
  {
    $http.post( '/api/auth/login', $scope.form ).success( function( data )
    {
      if ( !data.success )
      {
        $scope.form.errors = [ data ];

        // here I also want to mark the models 'email' and 'password' as invalid, so they both get the class 'ng-invalid'
      }
      else
      {
        $location.path( '/' );
      }
    });
  };
}
4

4 に答える 4

5

Tosh shimayama さんが正解でした。$setValidityは のメソッドであり、と のNgModelController2 つのパラメータを取りvalidationErrorKeyますisValid

$setValidityの詳細

有効状態を変更し、コントロールが有効になったときにフォームに通知します。(つまり、指定されたバリデータが既に無効としてマークされている場合、フォームに通知しません)。

ソースと詳細情報AngularJS: NgModelController

于 2012-08-29T09:24:25.807 に答える
3

クライアント側の検証は迅速ですが、たとえば firebug を使用すると、簡単に破ることができます。サーバー側の検証のみに固執することができます。サーバー上のすべてを検証し、キーのリストとエラー メッセージを含む BODY を返します。Angular ではサーバーに非同期でデータを送信できます。ポストバックが表示されないため、エンド ユーザーにはクライアント側の検証として表示されます。

この例を参照し、[保存] をクリックしてエラー メッセージを確認してください: upida.cloudapp.net:8080/org.upida.example.angular/order/create?clientId=1

ダウンロードできます: upida.codeplex.com

于 2013-09-10T22:41:46.910 に答える
0

これは、役に立つかもしれない素晴らしい検証ディレクティブですhttps://groups.google.com/forum/#!msg/angular/6v-AillQboI/D0OaZzV7Me0J

于 2013-02-04T20:28:52.457 に答える
0

私は何かをしましたが、そのレール固有のものです。おそらく、誰かにアイデアを与えるか、正しい方向にプッシュすることができ ます https://github.com/fmatosic/bubblemevalid

于 2013-06-14T15:21:55.970 に答える