2015-01-30 6 views
7

फ़ॉर्म में कैसे जोड़ा जाता है मैं एक फॉर्म में किसी फ़ील्ड के सत्यापन के लिए कस्टम कोणीय निर्देश का उपयोग कर रहा हूं।एनजी-अमान्य-पार्स क्लास

जब सत्यापन में से एक विफल रहता है, कस्टम त्रुटि के साथ, कक्षा ng-invalid-parse भी क्षेत्र में जोड़ा जाता है।

क्या यह सामान्य व्यवहार है? यदि हां, तो इसका क्या कारण है?

उत्तर

14

ng-invalid-parse एक पार्सर अपरिभाषित होने पर जोड़ा जाता है, उसके बाद कोई सत्यापन नहीं कहा जाएगा।

और जानकारी: AngularJS docs

+0

हां। लेकिन मुझे कोणीय दस्तावेज़ पृष्ठ पर संलग्न प्लंकर में एक ही व्यवहार नहीं मिला। http://plnkr.co/edit/gRtAwHXo1bBGtsdNoVcq?p=preview – user2568304

+0

यह व्यवहार कोणीय 1.3 में जोड़ा गया था। उपर्युक्त प्लंक पुराने संस्करण का उपयोग करता है, इसलिए, पार्स त्रुटि पुन: उत्पन्न नहीं होती है। – user2568304

4

इस मिला क्योंकि मेरी मान्यता सही था, लेकिन क्योंकि ng-invalid-parse लागू किया जा रहा था ng-invalid वर्ग अभी भी लागू किया जा रहा था।

मेरी (सरल) मामले में मैं एक IPv4 पता मान्य किया गया था, और बस मान देने के लिए विफल रहा था:

angular.module('insightApp.directives').directive('ipInput', function() { 
    return { 
    restrict: 'A', 
    require: '?ngModel', 
    link: function (scope, elem, attrs, ctrl) { 
     if (!(ctrl)) { 
     return; 
     } 

     function ipValidator(ngModelValue) { 
     if (
      ngModelValue != '0.0.0.0' && 
      ngModelValue != '255.255.255.255' && 
      ngModelValue.match(/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/) 
     ) { 
      ctrl.$setValidity('ipValidator', true); 
     } else { 
      ctrl.$setValidity('ipValidator', false); 
     } 

     // Adding this return statement resolved the problem with "ng-invalid-parse" being added 
     return ngModelValue; 
     } 

     ctrl.$parsers.push(ipValidator); 
    } 
    } 
}); 
संबंधित मुद्दे