2012-08-28 14 views
13

मेरे द्वारा प्रपत्र के लिए डिफ़ॉल्ट-सत्यापन अपेक्षित के रूप में कार्य करता है। लेकिन जब कोई उपयोगकर्ता एक वैध ईमेल पता और तीन वर्णों का पासवर्ड न्यूनतम टाइप करता है, तो इसका मतलब यह नहीं है कि लॉगिन प्रमाण-पत्र मान्य हैं।सर्वर-साइड सत्यापन फ़ॉर्म Angular.js

तो मेरे सवाल का कैसे मैं के बाद सर्वर साइड सत्यापन मॉडल 'ईमेल' और 'पासवर्ड' अमान्य करने के लिए सेट कर सकते हैं, तो इनपुट क्षेत्रों ng- के बजाय वर्ग एनजी-अमान्य मिल वैध।

मेरे वर्तमान कोड:

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

आप बस $ setValidity विधि का उपयोग कर सकते हैं? – Tosh

+2

पूरी तरह से असंबंधित है, लेकिन जब मैं अपने AJAX कॉल त्रुटियों को वापस करता हूं तो मैं स्थिति कोड 400 पर सेट करता हूं। इस तरह आपको 'data.success' को जांचने या सेट करने की आवश्यकता नहीं है, बल्कि इसके बजाय त्रुटि कॉलबैक में त्रुटियों को संभाल लें। – DanH

उत्तर

5

Tosh shimayama सही उत्तर दिया। $ setValidityNgModelController से एक विधि है और दो पैरामीटर लेता है: validationErrorKey और isValid। पर $ setValidity

बदलें वैधता राज्य

अधिक जानकारी होती है और जब नियंत्रण परिवर्तन वैधता सूचित करता है। (यानी अगर यह वैधता पहले से ही अमान्य के रूप में चिह्नित किया गया है तो यह फ़ॉर्म को सूचित नहीं करता है)।

स्रोत और अधिक जानकारी के AngularJS: NgModelController

0

मैं अपने रेल विशिष्ट कुछ किया लेकिन हो सकता है, हो सकता है यह किसी को एक विचार दे सकते हैं, या में धक्का सही दिशा https://github.com/fmatosic/bubblemevalid

3

क्लाइंट-साइड सत्यापन त्वरित है, लेकिन उदाहरण के लिए - फायरबग का उपयोग करना आसान है। आप केवल सर्वर-साइड सत्यापन के साथ रह सकते हैं। सर्वर पर सबकुछ मान्य करें और कुंजी और त्रुटि संदेशों की सूची के साथ बॉडी वापस करें। कोणीय आपको सर्वर को डेटा को असीमित रूप से भेजने की अनुमति देता है, अंतिम उपयोगकर्ता इसे क्लाइंट-साइड सत्यापन के रूप में देखेगा, क्योंकि कोई पोस्ट-बैक नहीं था।

इस उदाहरण देखें, क्लिक करने के लिए 'सहेजें', और त्रुटि संदेश मिलते कोशिश: upida.cloudapp.net:8080/org.upida.example.angular/order/create?clientId=1

आप इसे डाउनलोड कर सकते हैं: upida.codeplex.com

संबंधित मुद्दे