2013-02-20 18 views
7

मैं नया हूँ में सर्वर पर मौजूद है अगर Angular.js कोजांच डेटा पहले से ही Angular.js

<input type="email" disabled='disabled' name="email" ng-model="userInfo.emailAddress" 
            class="input-xlarge settingitem" style="height:30px;"> 

<span ng-show="myForm.email.$error.email" class="help-inline" style="color:red;font-size:10px;"> 
             Not a Valid Email Address</span> 

मैं ईमेल क्षेत्र है, इसी जो मैं सर्वर पर जाँच करने के लिए अगर यह पहले से डेटाबेस में है या नहीं मौजूद है जरूरत के लिए ।

किसी चरण यह कोणीय निर्देशों और सेवाओं का उपयोग किया जा सकता है सर्वर पर जाँच के लिए के माध्यम से मेरा मार्गदर्शन कर सकते हैं

उत्तर

9

मैं एक निर्देश है कि NgModelController#$parsers पाइप लाइन में प्लग लिखित सुझाव है (जाँच http://docs.angularjs.org/guide/forms से "कस्टम मान्यकरण") ।

.directive('uniqueEmail', ["Users", function (Users) { 
    return { 
    require:'ngModel', 
    restrict:'A', 
    link:function (scope, el, attrs, ctrl) { 

     //TODO: We need to check that the value is different to the original 

     //using push() here to run it as the last parser, after we are sure that other validators were run 
     ctrl.$parsers.push(function (viewValue) { 

     if (viewValue) { 
      Users.query({email:viewValue}, function (users) { 
      if (users.length === 0) { 
       ctrl.$setValidity('uniqueEmail', true); 
      } else { 
       ctrl.$setValidity('uniqueEmail', false); 
      } 
      }); 
      return viewValue; 
     } 
     }); 
    } 
    }; 
}]) 

कहाँ Users.query एक ईमेल अद्वितीय है या नहीं है अगर जाँच करने के लिए एक async कॉल है:

यहां इस तरह के एक निर्देश का चित्र है। बेशक आपको इसे अपने बैक एंड के कॉल के साथ प्रतिस्थापित करना चाहिए।

पूर्ण होने पर, इस निर्देश इसलिए की तरह इस्तेमाल किया जा सकता है:

<input type="email" ng-model="user.email" unique-email> 

इस निर्देश का उदाहरण angular-app कि AngularJS समुदाय के सदस्यों में से कुछ एक साथ रखा करने के लिए आम उपयोग-मामले को वर्णन करने की कोशिश से लिया गया है। यह देखने के लायक हो सकता है कि यह पूरा ऐप में कैसे फिट बैठता है।

+0

आपके उत्तर के लिए धन्यवाद, क्या आप यह भी सुझाव दे सकते हैं कि पिछले मूल्य की तुलना कैसे करें। –

+0

आपका समाधान ठीक काम कर रहा है, लेकिन मुझे एक समस्या का सामना करना पड़ रहा है, जब मुझे सर्वर से कॉलबैक मिलता है, तो मेरा पूरा फॉर्म स्पष्ट हो जाता है –

+0

आप सर्वर से कैसे कॉल करते हैं? –

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