मैं एक निर्देश है कि 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 समुदाय के सदस्यों में से कुछ एक साथ रखा करने के लिए आम उपयोग-मामले को वर्णन करने की कोशिश से लिया गया है। यह देखने के लायक हो सकता है कि यह पूरा ऐप में कैसे फिट बैठता है।
स्रोत
2013-02-20 11:05:05
आपके उत्तर के लिए धन्यवाद, क्या आप यह भी सुझाव दे सकते हैं कि पिछले मूल्य की तुलना कैसे करें। –
आपका समाधान ठीक काम कर रहा है, लेकिन मुझे एक समस्या का सामना करना पड़ रहा है, जब मुझे सर्वर से कॉलबैक मिलता है, तो मेरा पूरा फॉर्म स्पष्ट हो जाता है –
आप सर्वर से कैसे कॉल करते हैं? –