AngularJS - प्राचीन / गंदे और छुआ / अछूते के बीच अंतर


158

AngularJS Developer Guide - फ़ॉर्म बताते हैं कि फ़ॉर्म और फ़ील्ड के बारे में कई शैलियाँ और निर्देश हैं। हर एक के लिए, एक सीएसएस वर्ग:

ng-valid
ng-invalid
ng-pristine
ng-dirty
ng-touched
ng-untouched

क्या अंतर है pristine/dirty, और touched/untouched?


3
यह अब आप "सीएसएस कक्षाओं का उपयोग" शीर्षक के तहत जुड़े दस्तावेज़ में है।
बर्नहार्ड हॉफमैन

1
आप सही कह रहे हैं :)
अल्थॉट

जवाबों:


220

AngularJS डेवलपर गाइड - AngularJS द्वारा इस्तेमाल सीएसएस कक्षाएं

  • @property {बूलियन} $ अछूता सच अगर नियंत्रण अभी तक ध्यान नहीं खोया है।
  • @property {बूलियन} $ स्पर्श सही है अगर नियंत्रण ने ध्यान खो दिया है।
  • यदि उपयोगकर्ता ने अभी तक नियंत्रण के साथ बातचीत नहीं की है तो @property {बूलियन} $ प्राचीन।
  • यदि उपयोगकर्ता ने पहले ही नियंत्रण के साथ बातचीत की है तो @property {बूलियन} $ गंदा सच।

89

$pristine/ $dirtyआपको बताता है कि उपयोगकर्ता वास्तव में कुछ भी बदल गया है, जबकि $touched/ $untouchedआपको बताता है कि क्या उपयोगकर्ता केवल वहां गया है / दौरा किया है

यह सत्यापन के लिए वास्तव में उपयोगी है। इसका कारण $dirtyहमेशा मान्यता प्रतिक्रियाओं को दिखाने से बचना था जब तक कि उपयोगकर्ता ने वास्तव में एक निश्चित नियंत्रण का दौरा नहीं किया हो। लेकिन, केवल $dirtyसंपत्ति का उपयोग करके , उपयोगकर्ता को सत्यापन प्रतिक्रिया नहीं मिलेगी, जब तक कि वे वास्तव में मूल्य में बदलाव नहीं करते हैं। इसलिए, $invalidयदि उपयोगकर्ता मूल्य में परिवर्तन नहीं करता / करती तो एक फ़ील्ड अभी भी उपयोगकर्ता को संकेत नहीं दिखाती। यदि उपयोगकर्ता ने एक आवश्यक फ़ील्ड को पूरी तरह से अनदेखा कर दिया, तो सब कुछ ठीक लगा।

कोणीय 1.3 और ng-touched, अब आप एक विशेष शैली को नियंत्रण पर सेट कर सकते हैं जैसे ही उपयोगकर्ता ने धुंधला किया है, चाहे वे वास्तव में मूल्य संपादित करें या नहीं।

यहाँ एक CodePen है जो व्यवहार में अंतर दिखाता है।


मैं फ़ॉर्म की सत्यापन त्रुटियों को साफ़ करने का तरीका ढूंढ रहा हूं। फार्म। $ setPristine यह नहीं करता है। मैंने अन्य के सुझाव रूप को देखा है। $ setUntouched, लेकिन ऐसा लगता है कि यह कोणीय 1.3 19 बीटा में उपलब्ध नहीं है, जो कि संस्करण का उपयोग कर रहा है। हालांकि, मैं form.field_name को कॉल कर सकता हूं। $ setUntouched, लेकिन ऐसा करना सभी क्षेत्रों के लिए बोझ है, क्या कोई बेहतर तरीका है?
टी। रेक्स

$setPristineबस फार्म संयुक्त राष्ट्र बनाता है- $dirty। मुझे लगता है कि आप चाहते हो सकता है form.setValidity()इस पोस्ट पर कई उपयोगी उत्तर देखें ।
एक्सएमएल

14

प्रो में कोणीय -6 पुस्तक नीचे के रूप में विस्तृत है;

  • वैध : यदि तत्व की सामग्री वैध और गलत है तो यह संपत्ति सही है
  • अमान्य : यदि तत्व की सामग्री अमान्य और गलत है तो यह संपत्ति सही है

  • मूल तत्व: यदि तत्व की सामग्री को नहीं बदला गया है तो यह संपत्ति सही है

  • गंदा : यदि तत्व की सामग्री को बदल दिया गया है तो यह संपत्ति सही है
  • अछूता : यदि उपयोगकर्ता ने तत्व का दौरा नहीं किया है तो यह संपत्ति सही है।
  • छुआ गया : यदि उपयोगकर्ता ने तत्व का दौरा किया है तो यह संपत्ति सही है।

6

यह ध्यान देने योग्य है कि सत्यापन गुण रूपों और फार्म तत्वों के लिए अलग-अलग हैं (ध्यान दें कि छुआ और अछूता केवल खेतों के लिए हैं):

Input fields have the following states:

$untouched The field has not been touched yet
$touched The field has been touched
$pristine The field has not been modified yet
$dirty The field has been modified
$invalid The field content is not valid
$valid The field content is valid

They are all properties of the input field, and are either true or false.

Forms have the following states:

$pristine No fields have been modified yet
$dirty One or more have been modified
$invalid The form content is not valid
$valid The form content is valid
$submitted The form is submitted

They are all properties of the form, and are either true or false.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.