[英]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給出了正確的答案。 $ NgModelController
是NgModelController
一個方法,它接受兩個參數: validationErrorKey
和isValid
。
有關$ setValidity的更多信息
更改有效性狀態,並在控件更改有效性時通知表單。 (即如果給定的驗證器已被標記為無效,則不通知表格)。
源代碼和進一步信息AngularJS:NgModelController
客戶端驗證很快,但很容易破壞,例如 - firebug。 您只能堅持服務器端驗證。 驗證服務器上的所有內容並使用鍵列表和錯誤消息返回BODY。 Angular允許您以異步方式將數據發送到服務器,最終用戶將其視為客戶端驗證,因為沒有可見的回發。
查看此示例,嘗試單擊“保存”,然后查看錯誤消息: upida.cloudapp.net : 8080/org.upida.example.angular/order/create?clientId=1
你可以下載它: upida.codeplex.com
我做了一些事情,但它的軌道具體,也許它可以給某人一個想法,或推進正確的方向https://github.com/fmatosic/bubblemevalid
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.