簡體   English   中英

表單的服務器端驗證

[英]Server-side validation for form

表單的默認驗證我按預期工作。 但是,當用戶鍵入有效的電子郵件地址和最少三個字符的密碼時,這並不意味着登錄憑據有效。

所以我的問題是:

如何在服務器端驗證后將模型電子郵件密碼設置為無效,因此輸入字段將獲取類ng-invalid而非ng-valid。

我目前的代碼

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( '/' );
      }
    });
  };
}

Tosh shimayama給出了正確的答案。 $ NgModelControllerNgModelController一個方法,它接受兩個參數: validationErrorKeyisValid

有關$ setValidity的更多信息

更改有效性狀態,並在控件更改有效性時通知表單。 (即如果給定的驗證器已被標記為無效,則不通知表格)。

源代碼和進一步信息AngularJS:NgModelController

客戶端驗證很快,但很容易破壞,例如 - firebug。 您只能堅持服務器端驗證。 驗證服務器上的所有內容並使用鍵列表和錯誤消息返回BODY。 Angular允許您以異步方式將數據發送到服務器,最終用戶將其視為客戶端驗證,因為沒有可見的回發。

查看此示例,嘗試單擊“保存”,然后查看錯誤消息: upida.cloudapp.net : 8080/org.upida.example.angular/order/create?clientId=1

你可以下載它: upida.codeplex.com

這是一個很好的驗證指令,可能很有用https://groups.google.com/forum/#!msg/angular/6v-AillQboI/D0OaZzV7Me0J

我做了一些事情,但它的軌道具體,也許它可以給某人一個想法,或推進正確的方向https://github.com/fmatosic/bubblemevalid

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM