मैंने अतीत में होने वाली तारीख की आवश्यकता के लिए एक कस्टम सत्यापनकर्ता बनाया है। मैन्युअल रूप से फ़ील्ड में दिनांक दर्ज करते समय सत्यापन बहुत अच्छा लगता है। हालांकि, अगर मैं प्रोग्राम को दिनांकित रूप से बदलता हूं (क्षेत्र में टाइपिंग के विपरीत मॉडल को सीधे बदलें), तो सत्यापन आग नहीं आता है।कोणीय जेएस कस्टम सत्यापन मॉडल प्रोग्रामेटिक रूप से बदलते समय फायरिंग नहीं
मेरा मानना है कि मैं प्रलेखन में निर्देशित कस्टम सत्यापन निर्देश कर रहा हूं। Here is a jsFiddle समस्या का वर्णन। बेवकूफ में, यदि आप "प्रोग्राम दिनांक बदलें" बटन पर क्लिक करते हैं, तो आप देख सकते हैं कि सत्यापन त्रुटि प्रदर्शित नहीं होती है (लेकिन यदि आप इसे मैन्युअल रूप से बदलते हैं तो यह करता है)।
myApp.directive('pastDate', function() {
return {
restrict: 'A',
require: '?ngModel',
link: function (scope, element, attrs, ctrl) {
ctrl.$parsers.unshift(function (viewValue) {
var today = new Date();
today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
if (new Date(viewValue) < today) {
ctrl.$setValidity('pastDate', true);
return viewValue;
}
ctrl.$setValidity('pastDate', false);
return undefined;
});
}
};
});
फेलिक्स :) – Terry
@Terry हाँ, दुर्भाग्य से आप कार्यालय में केक को याद करने जा रहे हैं आज ही उसमें मुझे हराया। – yuxhuang
स्पष्टीकरण के लिए धन्यवाद, यह अब और अधिक समझ में आता है कि मैं $ पार्सर्स और $ फॉर्मेटर्स के बीच अंतर को समझता हूं। –